嵌套的N层循环,算法牛人进

Java_Design 2008-04-16 02:40:59
兄弟们,我问个变态的问题,如何实现嵌套N层循环?
比如
for(i=0;i<n;i++)
{
for(i=1;i<n;i++)
{
for(i=2;i<n;i++)
{

.。。。。(中间省略,嵌套N层)
} }
}
像这样该怎么写?就是说根据N是多少,动态地决定嵌套多少层循环进去。
不要和我说递归啊,我知道递归怎么写,就是想知道如果非要不递归和用这样的形式,该怎么办?大家支招吧!
...全文
890 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiqing_gao 2008-05-27
  • 打赏
  • 举报
回复
up
wwd252 2008-05-14
  • 打赏
  • 举报
回复
顶!
baobao2010 2008-05-04
  • 打赏
  • 举报
回复
mark
aayzaayz 2008-04-20
  • 打赏
  • 举报
回复
1.递归
2.栈
3.for( i= 0; i < n^N; i++)
{
……
}
ProjectDD 2008-04-20
  • 打赏
  • 举报
回复
两个字: "递归"
Supper_Jerry 2008-04-20
  • 打赏
  • 举报
回复
for 和while结合就可以了。
abc130314 2008-04-20
  • 打赏
  • 举报
回复

int n = 5;

int[] iarr_1 = new int[n];
int[] iarr_2 = new int[n];
for (int i = 0; i < iarr_1.length; i++) {
iarr_1[i] = i; //iarr_1[]为各层循环中,i的值
iarr_2[i] = i; //iarr_2[]为各层循环中,i的起始值
}

while (iarr_1[0] < n) {
iarr_1[n - 1]++; //最后一层的循环

for (int i = n - 1; i > 0; i--) {
if (iarr_1[i] == n) { //n为第i层循环中,i的终值
iarr_1[i - 1]++;
iarr_1[i] = iarr_2[i];
} else {
break;
}
}

}
ayezgq 2008-04-18
  • 打赏
  • 举报
回复
你那不叫算法。技巧而已。算法一般是与数据结构紧密联系的。
zhangliangjun222 2008-04-18
  • 打赏
  • 举报
回复
用一个goto语句可以实现
Java_Design 2008-04-17
  • 打赏
  • 举报
回复
6楼的,说得不清楚,不理解你什麽意思。
^_^
xkyx_cn 2008-04-17
  • 打赏
  • 举报
回复
mark
oo 2008-04-17
  • 打赏
  • 举报
回复
MARK
jmulxg 2008-04-17
  • 打赏
  • 举报
回复
如果下标都从1开始,可以看成n进制数,每个循环变量就是这个n进制数的一位

妙啊~~
Java_Design 2008-04-17
  • 打赏
  • 举报
回复
还有,感觉不出你上面那段程序有什么算法在里面,似乎漏洞百出。
Java_Design 2008-04-17
  • 打赏
  • 举报
回复
什么下标?我哪里有提到过什么下标?
tailzhou 2008-04-16
  • 打赏
  • 举报
回复
用栈模拟递归;
rushman 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 Java_Design 的帖子:]
兄弟们,我问个变态的问题,如何实现嵌套N层循环?
比如
for(i=0;i <n;i++)
{
for(i=1;i <n;i++)
{
for(i=2;i <n;i++)
{
.。。。。(中间省略,嵌套N层)
}
}
}
像这样该怎么写?就是说根据N是多少,动态地决定嵌套多少层循环进去。
不要和我说递归啊,我知道递归怎么写,就是想知道如果非要不递归和用这样的形式,该怎么办?大家支招吧!
[/Quote]
果然变态!
不过这应该不是算法问题。
实际上,就你给出的说明,这个N层嵌套的循环,只可能执行一遍——循环共用一个控制变量。
如此,N 层嵌套,会退化为 for(i = 1;i<n;i++{...} 的单层循环。

假设,每层循环改用不同的控制变量,N 层嵌套还是需要用递归解决(或者用某种方式模拟递归——模拟一个栈)。
  • 打赏
  • 举报
回复
假设每次循环n次,一共有N层,那就
for(int i=1; i<=n^N; i++)
{
……
}
nealxhf 2008-04-16
  • 打赏
  • 举报
回复
变态。。。
不过如果只是单纯循环,内容都在最后一个里面的话
那就只是单纯计算有多少个最后的循环。次数就是 1*2*3*…n次循环
那就直接写
int m = 1;
for (int i=1;i<n+1;i++)
{
m = m*i;
}
for (int j=0;j<m;j++)
{

}
C1053710211 2008-04-16
  • 打赏
  • 举报
回复
老大就是强!!!不过至少这半年应该没人提问过,呵呵,方法很巧妙,mark
加载更多回复(2)

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧