列印以下序列:
(a),(b),(c),(d),(e)........(z)
(a,b),(a,c),(a,d),(a,e)......(a,z),(b,c),(b,d).....(b,z),(c,d).....(y,z)
(a,b,c),(a,b,d)....(a,b,z),(a,c,d)....(x,y,z)
....
(a,b,c,d,.....x,y,z)
思路一:每個集合可以看做乙個數,根據字母是26進製的特性,生成所有數(去掉一些),再排序輸出。但最大的數可以到達26^26,複雜度太大。且不知如何實現。
思路二:用到排列組合的思想,用遞迴代替26重迴圈。
view code
1 #include迭代的是人,遞迴的是神。2using
namespace std;
3#define len 6
4int buf[len];
5bool flag = false;67
void show(int len)
8 17 cout<
18if(flag)cout<
19else cout<20 }
21void gene(int first,int deepth,int index) //
列印首字母為'a'+first,長度為deppth的所有集合,這樣的集合有多少個?
2228
for(int i=first+1; i//
其實就是遞迴列印首字每加1,長度減1的所有集合
29 gene(i,deepth-1,index+1);
30 }
31void solve()
32 42 }
43 }
44int main()
45
這個題目我想了兩天,遞迴關鍵是要理解其思想,洞穿其過程。
接下來要加強遞迴的題目的訓練。
精簡版,方便閱讀。感謝神一樣的男人,陽神!
view code
1 #include2 #include
3 #include 45
#define len 6
6int buf[len];78
void show(int ind)
9 15
void gene(int first, int len, int ind) //
從'a'+first開始生成長度為len的序列,當前生成字母儲存在buf[ind]
1624
void solve()
25 32 }
33int main()
34
物件導向部分 201
小夥伴們,還在為不知道怎麼下手而頭疼嗎,我們程式競賽協會來幫你們啦 啦啦啦。另外,如果有對程式設計含有濃厚興趣的同學,我們隨時歡迎你們的加入喲 策劃 譚兆飛 程式設計 管懷文 協助 一號人員要求給她打碼 乾脆二號也打碼好了o o 其實只是提供了題目啦 物件導向部分 201 include inclu...
2 01揹包問題
有 nn 件物品和乙個容量是 vv 的揹包。每件物品只能使用一次。第 ii 件物品的體積是 vivi,價值是 wiwi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。輸出最大價值。輸入格式 第一行兩個整數,n,vn,v,用空格隔開,分別表示物品數量和揹包容積。接下來有 n...
2 01揹包問題
有 nn 件物品和乙個容量是 vv 的揹包。每件物品只能使用一次。第 ii 件物品的體積是 vivi,價值是 wiwi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。輸出最大價值。第一行兩個整數,n,vn,v,用空格隔開,分別表示物品數量和揹包容積。接下來有 nn 行,每...