遞迴演算法九:整數劃分問題
遞迴演算法十:排隊購票
遞迴演算法十一:楊輝三角
遞迴演算法十二:計算兩個數的最大公約數
遞迴演算法十三:計算乙個正整數中所有的數字之和
遞迴演算法十四:求(1+1/2+1/3+...+1/n)的和
本部落格其他文章推薦
當n=1時,
perm( r )=( r ),其中r是集合r中唯一的元素;
當n>1時,perm( r )由
(r1) perm(r1)
(r2) perm(r2)
…(rn) perm(rn)構成。
void
perm
(int args,
int k,
int m)
else
for(
int j=k;j<=m;j++
)}
整數6的劃分方法數 =
最大加數不大於6的劃分方法數
最大加數不超過6的分解方法數
=最大加數不超過5的分解方法數
+最大加數等於5的分解方法數
即q(6,6) = q(6,5) + q(0,6)
以此類推
一場球賽開始前,售票工作正在緊張進行中。
每張球票為50元,
有m+n個人排隊等待購票,
其中有m 個人手持50元的鈔票,
另外n個人手持100元的鈔票。
求出這m+n個人排隊購票,使售票處不至出現找不開錢的局面的不同排隊種數 。
(約定:開始售票時售票處沒有零錢;拿同樣面值鈔票的人對換位置為同一種排隊。)
(1) n = 0,即所有人都拿50元的鈔票,queuenum(m,n) = 1;
(2) m < n時,即使所有50元的鈔票都找零也找不開,所以queuenum(m,n) = 0;
(3)1) 第m+n個人如果拿的100元鈔票,那麼總共的排隊數量為queuenum(m,n-1);
2) 第m+n個人如果拿的50元鈔票,那麼總共的排隊數量為queuenum(m-1,n);
綜上,第三種情況的排隊數:queuenum(m,n) = queuenum(m,n-1) + queuenum(m-1,n);
1、採用二維陣列儲存
2、對角線初始化為1,第一列初始化為1
3、其餘情況yanghui********(i-1,j)+yanghui********(i-1,j-1);
#include
using
namespace std;
const
int n =
100;
intyanghui********
(int i,
int j)
;int
main()
return0;
}int
yanghui********
(int i,
int j)
求最大公約數是個經典問題,我們這裡介紹兩種解決方法。
方法一:更相減損
除非兩數相等,否則兩數中最大數和最小數的差值與最小數的公約數即為兩數的公約數。
方法二:輾轉相除
除非兩數求余為零,否則後數與前數對後數的取餘值的公約數即為兩數的公約數。
//更相減損
intmcdmethod1
(int num1,
int num2)
//輾轉相除
intmcdmethod2
(int num1,
int num2)
除非正整數為零,否則整數除以十的結果與正整數取餘十的和即為最後結果。
int
sumnum
(int num)
如果n = 1,返回1;否則返回sum(n-1) + 1.0/n。
double
sum(
int n)
演算法設計與分析之遞迴演算法練習(上)
演算法設計與分析之數字三角形問題
演算法設計與分析之zoj2104- let the balloon rise
演算法設計與分析之優先佇列及解決zoj1167
演算法設計與分析 遞迴
遞迴是一種技術手段,並不嚴格算是一種演算法,是指程式直接間接呼叫自身的程式設計技巧。遞迴需要有邊界條件,遞迴前進段和遞迴返回段。1 當邊界條件不滿足時,遞迴前進 2 當邊界條件滿足時,遞迴返回。ps 在使用遞迴策略時,必須有乙個明確的遞迴結束條件,成為遞迴出口,否則將無限進行下去 遞迴的缺點 遞迴演...
演算法設計與應用練習 遞迴
1.十進位制轉二進位制 2.斐波那契數列 3.翻牌問題 4.打靶問題 5.八皇后問題 include stdio.h include include include include include stdlib.h 1.輸入乙個自然數 90000 分別用遞迴法和非遞迴法求其二進位制表示.演算法設計思...
演算法分析設計 遞迴演算法
what s the 遞迴演算法 定義 程式直接或間接呼叫自身的程式設計技巧稱為遞迴演算法 recursion 乙個過程或函式在其定義或說明中又直接或間接呼叫自身的一種方法,它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多...