[问题] 递回打印的问题

楼主: storm654321 (P助)   2015-06-18 17:19:59
假设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 循环就能办到的方法吗?
作者: Feis (永远睡不着 @@)   2015-06-18 17:44:00
用阵列只需要一个循环
作者: winken2004 (新竹肥宅)   2015-06-18 17:44:00
我看不懂input跟output的关系 QQ
作者: diabloevagto (wi)   2015-06-18 21:23:00
阵列
作者: firejox (Tangent)   2015-06-18 23:49:00
阵列
作者: bigpigbigpig (To littlepig with love)   2015-06-19 11:37:00
作者: johnjohnlin (嗯?)   2015-06-20 13:34:00
backtracking?
作者: EdisonX (卡卡兽)   2015-06-20 13:56:00
如果不介意用 C++ 的话,可以借助 next_permutation ,你原本的是 C(n,m) , 函式库提供的是 P(n,m) , 加一点东西就可达到需求. http://ideone.com/Ha220f 参考下.

Links booklink

Contact Us: admin [ a t ] ucptt.com