我有一個功能打印所有的三元串組合從長度0到長度爲n的結果:遞歸C++組合學:不知道怎麼弄才能
void TerString(int len,string input){
printf("\n%s",input.c_str());
if (input.length()<len){
TerString(len,input+"0");
TerString(len,input+"1");
TerString(len,input+"2");
return;
}
else
return;
}
不過,我不能完全肯定如何着手以合理的順序獲取這些信息。例如,出來的結果是這樣,當我調用TerString(3,「」): 0,00,000,001,002,01,010,011,012,02,020,021,022,1,10,100,101,102,11,110,111,112,12,120,121,122,2,20,200,201,202,21,210,211,212,22,220,221,222
我會像他們這樣按字典順序排列出來: 0,1,2,00,01,02,10,11,12,20,21,22,...等等...
沒有加載它們到一個數組/列表和使用排序算法,有沒有辦法做到這一點?
它將打印:0,1,2,00,01, 02,001,002,003,...不是嗎? – amit 2011-03-17 19:12:58
你同時也在增加字符串的大小和減少len,這隻會導致請求長度的一半。 – amit 2011-03-17 19:20:16
@amit:不,因爲他將'len'與零比較,所以不會從兩端關閉。 – 2011-03-17 19:45:04