[問題] 遞迴列印的問題

看板C_and_CPP (C/C++)作者 (spongebob)時間10年前 (2015/06/18 17:20), 10年前編輯推噓3(306)
留言9則, 7人參與, 最新討論串1/2 (看更多)
假設input x=4 y=8 output為: 1234 1235 1236 1237 1238 1245 1246 1247 1248 1256 1257 1258 1345 1346 1347 1348 1356 1357 1358 . .(依此類推) . 5678 我比較直觀的想法是這樣 for(i=1;i<6;i++) { for(j=i+1;j<7;j++) { for(k=j+1;k<8;k++) { for(l=k+1;l<9;l++) { printf("%d%d%d%d\n",i,j,k,l); } } } } 居然要用到四層的 for 迴圈 如果我的input x=100 y=1000 想要印出 串遍 的 1 2 3 4 ....100 1 2 3 4 ....101 . . 901 902 903 904 ......1000 那不就要100個 for 迴圈才辦的到... 請問有不需要那麼多 for 迴圈就能辦到的方法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.64.91.23 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1434619201.A.4D3.html

06/18 17:44, , 1F
用陣列只需要一個迴圈
06/18 17:44, 1F

06/18 17:44, , 2F
我看不懂input跟output的關係 QQ
06/18 17:44, 2F
大概是像 大樂透 你可以選4個號碼 然後從1~8裡面抽四個 這樣的話 印出 可能的排列組合 就會是 123 (4~8) 124 (5~8) 可以把那個四層迴圈複製貼去debug看看@@! 只是要記得前面宣告 int i,j,k,l; ※ 編輯: storm654321 (1.173.5.240), 06/18/2015 17:56:50 ※ 編輯: storm654321 (1.173.5.240), 06/18/2015 17:57:45

06/18 21:23, , 3F
陣列
06/18 21:23, 3F

06/18 23:49, , 4F
陣列
06/18 23:49, 4F

06/19 11:37, , 5F
06/19 11:37, 5F

06/20 13:34, , 6F
backtracking?
06/20 13:34, 6F

06/20 13:56, , 7F
如果不介意用 C++ 的話,可以借助 next_permutation ,
06/20 13:56, 7F

06/20 13:57, , 8F
你原本的是 C(n,m) , 函式庫提供的是 P(n,m) , 加一點東
06/20 13:57, 8F

06/20 13:58, , 9F
西就可達到需求. http://ideone.com/Ha220f 參考下.
06/20 13:58, 9F
文章代碼(AID): #1LWer1JJ (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1LWer1JJ (C_and_CPP)