Time of Update: 2018-12-03
7-1-1:其中藍圈表示下次排序中的主元,紅框表示這次不用參加排序的元素:7-1-2:返回r;這兒肯定就是對等號做處理,對於對於主元的元素,一個放入左邊,另一個放在右邊,交叉進行;PARTITION(A,p,r) x=A[r] i=p-1 flag=true//對於等於x元素的處理控制, //當為true時,放在左邊,當為false時放在右邊 for j=p to r-1 //此處等號單獨處理 if A[j]==x and flag==true i=i+1
Time of Update: 2018-12-03
DFS是我學習圖論所學到的第二個知識點,思想就是棧的思想。解一道自己做的題:農田灌溉問題:Benny has a spacious farm land to irrigate. The farm land is a rectangle, and is divided into a lot of samll squares. Water pipes are placed in these squares. Different square has a different type of pipe.
Time of Update: 2018-12-03
上次學習了havel-hakimi定理判斷一個度數序列是否可圖,http://blog.csdn.net/wangyanphp/article/details/8834608(Havel-Hakimi 定理)由非負整數組成的非增序列s:d1, d2, …, dn(n ≥ 2, d1 ≥ 1)是可圖的,若且唯若序列 s1: d2 – 1, d3 – 1, …, dd1+1 – 1, dd1+2, …, dn是可圖的。序列s1 中有n-1 個非負整數,s
Time of Update: 2018-12-03
Allocate管理的是記憶體配置。這裡主要考慮的是對於小額區塊的記憶體管理,如果小額區塊直接使用new操作符進行分配,第一會造成記憶體的片段;第二配置時會造成額外負擔;所謂額外負擔就是,每次索取一塊記憶體時,都必須向系統分配一塊空間,以記錄記憶體的大小。所以這裡採用兩級配置器:第一級配置器就是當要求的記憶體足夠大時,直接使用malloc和free配置和釋放記憶體;多大是足夠大?STL中定義當要求得記憶體大於128byte時,就是足夠大了。//mymemory.h#ifndef
Time of Update: 2018-12-03
//myiterator#ifndef _MYITERATOR#define _MYITERATOR//迭代器是一種智能指標//首先利用繼承關係定義五種迭代器類型struct input_iterator_tag{};struct out_put_tag{};struct forward_iterator_tag:public input_iterator_tag{};struct bidirectional_iterator_tag:public forward_iterator_tag{};
Time of Update: 2018-12-03
想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410 轉載請註明出處:http://blog.csdn.net/wangjian8006 題目大意:
Time of Update: 2018-12-03
<html><head><script language="javascript">var sorttype = 1; //desc function sortByCol(colNum){ //排序 var parNode = document.getElementById("listtable"); //定位到table上,listtable為表格的IDfor(var i=0; i<parNode.rows.length-1;
Time of Update: 2018-12-03
//myconstruct.h#ifndef _MYCONSTRUCT#define _MYCONSTRUCT#include"myiterator.h"#include<algorithm>using std::copy;using std::fill_n;using std::fill;/**********記憶體處理基本工具**********************///五個全域函數,作用於未初始化的空間//----------------------------------
Time of Update: 2018-12-03
想看更多的解題報告:http://blog.csdn.net/wangjian8006/article/details/7870410
Time of Update: 2018-12-03
營救(Rescue)ZOJ Monthly, October 2003, ZOJ1649題目描述:Angel 被MOLIGPY 抓住了,她被關在監獄裡。監獄可以用一個N×M 的矩陣來描述,1<N, M≤200。監獄由N×M 個方格組成,每個方格中可能為牆壁、道路、警衛、Angel 或Angel 的朋友。Angel 的朋友想去營救Angel。他的任務是接近Angel。約定“接近Angel”的意思是到達Angel被關的位置。如果Angel
Time of Update: 2018-12-03
12-1-2:二叉搜尋樹:left.key<key<eight.key;最小堆:key<left.key,key<right.key;不能,使用堆排序的話,得O(nlgn)12-1-3:這個已經在第十章做過了,使用棧的話,有點浪費,因為使用棧,parent就用不上了;不使用棧的情況,就是使用parent回溯父結點,對於x,我們已經有了尋找x後繼得程式:TERR-SUCCSSOR,我們從最小節點開始調用TREE-SUCCESSOR即可12-1-4:這個也已經做過了,此處不重
Time of Update: 2018-12-03
2-3-1:2-3-2:MERGE2(A,p,q,r) n1=q-p+1 n2=r-q let L[1..n1]and R[1...n2] be new arrays for i=1 to n1 L[i]=A[p+i-1] for j=1 to n2 R[j]=A[q+j] i=1 j=1 k=1 while i<=n1 and j<=n2 if L[i]<=R[j] A[k]=L[i]i=i+1 else
Time of Update: 2018-12-03
10-1-2:兩個棧分別從數組的兩端開始,向中間擴充;10-1-5:這個deque的代碼以前的實現過(c++
Time of Update: 2018-12-03
第i個順序統計量:第i小的元素;對於一個n個元素的數組來說,當n為奇數時,中位元為第i=(n+1)/2個順序統計量;當n為偶數時,中位元為第i=n/2和i=n/2+1個順序統計量;此處只考慮i=(n+1)/2向下取整處的元素,即下中位元。對於最大值和最小值:MINIMUM(A) min=A[1] for i=2 toA.length if min>A[i] min=A[i] return min需要(n-1)次比較才能找出來;對於同時找最大值和最小值:我們並不需要進行(2n-2
Time of Update: 2018-12-03
9-1-1:假設我們還是成對元素的比較,選取出每對元素的最小值,再進行成對比較,這個結構學名叫做勝者樹;那麼第二小的元素肯定是跟第一小的元素比較中被過濾掉的;假設有n個元素,那麼樹的高度為ceil(lgn),建立這顆“勝者樹”的比較次數是(n-1),尋找第二小元素的比較次數最多是是ceil(lgn)-1所以比較次數是n+ceil(lgn)-2下列實現沒有用鏈表尋找關係,讀者可以自己用鏈表實現:#include<iostream>//此處主要模仿第六章中的堆即可using
Time of Update: 2018-12-03
/*二叉搜尋樹是一棵二叉樹,之所以成為搜尋樹,是因為適用於搜尋,大部分與搜尋有關的演算法, *大都採用這一策略,包括B樹,也可以看做是對二叉搜尋樹的擴充 *二叉搜尋樹滿足: *設x為樹中一個結點,如果y是x左子樹的一個節點,那麼y.key<=x.key *如果y是x右子樹的一個結點,那麼y.key>=x.key *//*二叉搜尋樹中的結點結構: *關鍵字key,衛星資料data *parent--父結點,left-child--左孩子,right-child右孩子
Time of Update: 2018-12-03
這篇代碼是寫給自己看的,所以沒什麼注釋,大家可以去看侯捷先生的《STL 源碼剖析》//mydeque.h#include"myconstruct.h"#include"mymemory.h"using std::max;using std::copy_backward;/*deque是雙向開頭的連續線性空間,它動態地以分段連續空間組合而成,這個表面上deque的迭代器 *支援隨機訪問,實則是假象,這裡是以複雜的迭代器構架來維持此假象,我學習stl deque的目的是
Time of Update: 2018-12-03
//強連通分量//題意:求從u出發能到v,並且從v出發也能到u的這些點,並且將其輸出;//求出一個圖的若干個強連通分量並且如果這個強連通分量中的縮點出度為0的話那麼這個強連通分量裡面的點就都滿足題意。//kosaraju//poj 2553#include <iostream>using namespace std;#define MAXM 50010#define MAXV 5010#define min(a,b) (a>b?b:a)typedef struct{int s,
Time of Update: 2018-12-03
先自己寫了一個簡單但是代碼寫的挺差的單鏈表:#include"mymemory.h"#include"myconstruct.h"#include<iostream>//簡單單鏈表template<typename T>struct _slist_node {T data;_slist_node* next;};//既然是簡單鏈表,我們應該使用new分配記憶體,不過,我覺得我們確實應該使用記憶體池template<typename T,typename Alloc=
Time of Update: 2018-12-03
//poj