1.遞迴的概念
直接或間接地呼叫自身的演算法稱為遞迴演算法。用函式自身給出定義的函式稱為遞迴函式。 在計算機演算法設計與分析中,使用遞迴技術往往使函式的定義和演算法的描述簡潔且易於理解。
對於大運算來說由於過程太多效率很低,且開銷大,常用遞推代替
編寫乙個遞迴函式,將10進製轉化成radix進製(輸出二進位制形式)
#includeusing namespace std;
void change(int t,int r)
void reverse( int n)的全排列(n!種)。 設r=是要進行排列的n個元素, ri=r-。 集合x中元素的全排列記為perm(x)。 (ri)perm(x)表示在全排列perm(x)的每乙個排列前加上字首得到的排列。
#includeusing namespace std;
void perm(int list, int k, int m)
return -1;
}int main()
; cout《眾數和重數
問題描述:給定含有n個元素的多重集合s,每個元素在s中的次數稱為該元素的重數。多重集s中重數最大的元素稱為眾數。 例如,s=。眾數為2,其重數為3。 任務:對於給定的由n個自然數組成的多重數集s,程式設計計算s的眾數及其重數。
#include using namespace std;
struct mdata;
void msort(int a, int s, int e, mdata &result)
if(leftresult.count)
if(right-s>result.count) msort(a,s,right-1, result);
if(e-right>result.count) msort(a,right+1,e,result);
return ;
}int main()
; int a[10]=;
msort(a,0,9,result);
cout《迴圈賽日程表
迴圈賽日程表問題,設有n=2k個選手要進行迴圈賽,設計乙個滿足以下要求的比賽日程表:
每個選手必須與其他n-1個選手各賽一次;
每個選手一天只能賽一次;
迴圈賽一共進行n-1天。
#includeusing namespace std;
#define max 100
int a[max][max];
void copy(int tox, int toy, int fromx, int fromy, int r)
void table(int k)
}int main()
return 0;
}
棋盤覆蓋問題
在乙個2k×2k個方格組成的棋盤中,恰有乙個方格與其他方格不同,稱該方格為一特殊方格,且稱該棋盤為一特殊棋盤。 在棋盤覆蓋問題中,要用圖示的4種不同形態的l型骨牌覆蓋給定的特殊棋盤上除特殊方格以外的所有方格,且任何2個l型骨牌不得重疊覆蓋。 覆蓋任意乙個2k×2k的特殊棋盤,用到的骨牌數恰好為(4k-1)/3。
//æåå츲¸çîêìâ
#includeusing namespace std;
int tile=1;
int board[4][4];
void cb(int tr, int tc, int dr, int dc, int size)
if (dr < tr + s && dc >= tc + s)
cb(tr, tc + s, dr, dc, s);
else
if (dr >= tr + s && dc < tc + s)
cb(tr + s, tc, dr, dc, s);
else
if (dr >= tr + s && dc >= tc + s)
cb(tr + s, tc + s, dr, dc, s);
else
}int main()
int dr, dc;
cin >> dr >> dc;
cb(0, 0, dr, dc, size);
for (int i = 0; i < 4; i++)
}
輸油管道問題
某石油公司計畫建造一條由東向西的主輸油管道。該管道要穿過乙個有n口油井的油田。從每口油井都要有一條輸油管道沿最短路經(或南或北)與主管道相連。 如果給定n口油井的位置,即它們的x座標(東西向)和y座標(南北向),應如何確定主管道的最優位置,即使各油井到主管道之間的輸油管道長度總和最小的位置?
給定n口油井的位置,程式設計計算各油井到主管道之間的輸油管道最小長度總和。
#include#includeusing namespace std;
int main()
sort(a, a + n);
int min = 0;
for (int i = 0; i < n; i++)
cout << min << endl;
}
遞迴和分治策略
直接或間接地呼叫自身的演算法稱為遞迴演算法。用函式自身給出定義的函式稱為遞迴函式。在計算機演算法設計與分析中,使用遞迴技術往往使函式的定義和演算法的描述簡潔且易於理解。對於大運算來說由於過程太多效率很低,且開銷大,常用遞推代替 編寫乙個遞迴函式,將10進製轉化成radix進製 輸出二進位制形式 in...
遞迴與分治策略
1 全排列問題 設r n 是要進行排列的n個元素。集合x中元素的全排列記為perm x 求r n 的全排列perm r n 用遞迴演算法求解 1 找出遞迴子結構性質 即原問題的解包含了子問題的解,且子問題的描述與原問題相同。這就可以用子問題的解來構造原問題的解。設r i r n 這是乙個子問題。設 ...
遞迴與分治策略
1.遞迴 直接或間接地呼叫自身的演算法稱為遞迴演算法。用函式自身給出定義的函式稱為遞迴函式。1 階乘函式 include using namespace std int main int factorial int n 2 fibonacci數列 include using namespace st...