由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 10个包子请教一个简单的编程问题
相关主题
How to have another func call printf with va_arg list ?python question
一年多前我发了几个贴子关于FP的想法一个简单的算法问题?
请教C数组定义问题Matlab函数变量问题,需要循环产生、添加到变量列中,该如何实(转载)
C++ func overload questionfunc调用结束时出错
如何实现N层循环嵌套[合集] 问个递归的问题
C++ Q110: Add without +大家帮我看看这个C程序为什么出错了
请教一道c/c++题如何得到位数可变的bitset
printf("%s\n", NULL)的结果问个c++问题
相关话题的讨论汇总
话题: int话题: 循环话题: loop话题: void话题: printf
进入Programming版参与讨论
1 (共1页)
d*********6
发帖数: 1972
1
本人编程菜鸟,因为科研上面需要自己写一个程序,所以硬着头皮在做,用C(就是本
科学的那点基础).
有一个很简单的问题请教各位大牛,希望有一个简单的解决方法,第一个解答的有5个
包子,之后五个每人一个包子。
希望写一个循环,循环的层数N是可变的。
举个简化的例子,当N=2的时候,循环是
for(i[0]=0; i[0]<3; i[0]++)
for(i[1]=0; i[1]<3; i[1]++){
循环体,里面会用到*i的值.
}
当N=3的时候,是三层循环,循环变量分别是i[0], i[1], 1[2]。
希望把这个循环推广到任意N (N不会很大)。
谢谢大家。
c**t
发帖数: 2744
2
这得用到递归、迭代。

本人编程菜鸟,因为科研上面需要自己写一个程序,所以硬着头皮在做,用C(就是本
科学的那点基础).
有一个很简单的问题请教各位大牛,希望有一个简单的解决方法,第一个解答的有5个
包子,之后五个每人一个包子。
希望写一个循环,循环的层数N是可变的。
举个简化的例子,当N=2的时候,循环是
for(i[0]=0; i[0]<3; i[0]++)
for(i[1]=0; i[1]<3; i[1]++){
循环体,里面会用到*i的值.
}
当N=3的时候,是三层循环,循环变量分别是i[0], i[1], 1[2]。
希望把这个循环推广到任意N (N不会很大)。
谢谢大家。

【在 d*********6 的大作中提到】
: 本人编程菜鸟,因为科研上面需要自己写一个程序,所以硬着头皮在做,用C(就是本
: 科学的那点基础).
: 有一个很简单的问题请教各位大牛,希望有一个简单的解决方法,第一个解答的有5个
: 包子,之后五个每人一个包子。
: 希望写一个循环,循环的层数N是可变的。
: 举个简化的例子,当N=2的时候,循环是
: for(i[0]=0; i[0]<3; i[0]++)
: for(i[1]=0; i[1]<3; i[1]++){
: 循环体,里面会用到*i的值.
: }

p******g
发帖数: 347
3
check out a related thing: std::next_permutation
http://www.cplusplus.com/reference/algorithm/next_permutation/

【在 d*********6 的大作中提到】
: 本人编程菜鸟,因为科研上面需要自己写一个程序,所以硬着头皮在做,用C(就是本
: 科学的那点基础).
: 有一个很简单的问题请教各位大牛,希望有一个简单的解决方法,第一个解答的有5个
: 包子,之后五个每人一个包子。
: 希望写一个循环,循环的层数N是可变的。
: 举个简化的例子,当N=2的时候,循环是
: for(i[0]=0; i[0]<3; i[0]++)
: for(i[1]=0; i[1]<3; i[1]++){
: 循环体,里面会用到*i的值.
: }

d*********6
发帖数: 1972
4
我知道用递归,能不能说的详细点,比如下面这个递归有点问题
int N=2;
void loop(int *i, int level){
for(i[level]=0; i[level]<3; (i[level])++){
if(level==N){
printf("%d\n", i[level]);
}
else loop(i, level+1);
}
}
int main(){
int i[N];
loop(i, 0);
}
这个和我希望得到的循环结果不同,每个循环体都被运行了3次

【在 c**t 的大作中提到】
: 这得用到递归、迭代。
:
: 本人编程菜鸟,因为科研上面需要自己写一个程序,所以硬着头皮在做,用C(就是本
: 科学的那点基础).
: 有一个很简单的问题请教各位大牛,希望有一个简单的解决方法,第一个解答的有5个
: 包子,之后五个每人一个包子。
: 希望写一个循环,循环的层数N是可变的。
: 举个简化的例子,当N=2的时候,循环是
: for(i[0]=0; i[0]<3; i[0]++)
: for(i[1]=0; i[1]<3; i[1]++){

X****r
发帖数: 3557
5
void loop(int limits[], int n, void (*func)(int x[])) {
int i, *x = (int *)malloc(n * sizeof(int));
for (i = 0; i < n; x[i++] = 0);
do {
func(x);
for (i = n-1; i >= 0 && ++x[i] >= limits[i]; x[i--] = 0);
} while (i >= 0);
free(x);
}

【在 d*********6 的大作中提到】
: 本人编程菜鸟,因为科研上面需要自己写一个程序,所以硬着头皮在做,用C(就是本
: 科学的那点基础).
: 有一个很简单的问题请教各位大牛,希望有一个简单的解决方法,第一个解答的有5个
: 包子,之后五个每人一个包子。
: 希望写一个循环,循环的层数N是可变的。
: 举个简化的例子,当N=2的时候,循环是
: for(i[0]=0; i[0]<3; i[0]++)
: for(i[1]=0; i[1]<3; i[1]++){
: 循环体,里面会用到*i的值.
: }

r***t
发帖数: 21
6
I do not understand the question. It seems you need to execute something i[
0]*i[1]*.... times.
H****r
发帖数: 2801
7
Xentar大师这个写的太老辣了,不服不行啊!

【在 X****r 的大作中提到】
: void loop(int limits[], int n, void (*func)(int x[])) {
: int i, *x = (int *)malloc(n * sizeof(int));
: for (i = 0; i < n; x[i++] = 0);
: do {
: func(x);
: for (i = n-1; i >= 0 && ++x[i] >= limits[i]; x[i--] = 0);
: } while (i >= 0);
: free(x);
: }

d*********6
发帖数: 1972
8
是啊 太牛了 越看越佩服!包子已发 谢谢大家

【在 H****r 的大作中提到】
: Xentar大师这个写的太老辣了,不服不行啊!
L***n
发帖数: 6727
9
beautiful code, co 佩服

【在 H****r 的大作中提到】
: Xentar大师这个写的太老辣了,不服不行啊!
l*********s
发帖数: 5409
10
Re!

【在 L***n 的大作中提到】
: beautiful code, co 佩服
相关主题
C++ Q110: Add without +python question
请教一道c/c++题一个简单的算法问题?
printf("%s\n", NULL)的结果Matlab函数变量问题,需要循环产生、添加到变量列中,该如何实(转载)
进入Programming版参与讨论
b***i
发帖数: 3043
11
你的目的是什么?遍历?排列?

【在 d*********6 的大作中提到】
: 本人编程菜鸟,因为科研上面需要自己写一个程序,所以硬着头皮在做,用C(就是本
: 科学的那点基础).
: 有一个很简单的问题请教各位大牛,希望有一个简单的解决方法,第一个解答的有5个
: 包子,之后五个每人一个包子。
: 希望写一个循环,循环的层数N是可变的。
: 举个简化的例子,当N=2的时候,循环是
: for(i[0]=0; i[0]<3; i[0]++)
: for(i[1]=0; i[1]<3; i[1]++){
: 循环体,里面会用到*i的值.
: }

L***n
发帖数: 6727
12
目的是变量循环重数吧,当年学BASIC的标准练习之一啊
在 bihai (学得不好) 的大作中提到: 】
d****n
发帖数: 1637
13
递归的
#include
#include
void print_a(int a[], int n){
int i;
for(i=0;i printf("%d ", a[i]);
}
printf("\n");
}
void loop(int a[], int n, int N ){
if(n==0){print_a(a, N) ;return;}
int i;
for(i=0;i a[n-1]=i;
loop(a, n-1, N);
}
}
int main(){
int N=6;
int a[N] ;
loop( a, N, N);
}

【在 d*********6 的大作中提到】
: 我知道用递归,能不能说的详细点,比如下面这个递归有点问题
: int N=2;
: void loop(int *i, int level){
: for(i[level]=0; i[level]<3; (i[level])++){
: if(level==N){
: printf("%d\n", i[level]);
: }
: else loop(i, level+1);
: }
: }

d****n
发帖数: 1637
14
你这个是all permutation 吧?
楼主的好像就是 enumerating
没看懂 limit[]是什么,赐教。给个driver

【在 X****r 的大作中提到】
: void loop(int limits[], int n, void (*func)(int x[])) {
: int i, *x = (int *)malloc(n * sizeof(int));
: for (i = 0; i < n; x[i++] = 0);
: do {
: func(x);
: for (i = n-1; i >= 0 && ++x[i] >= limits[i]; x[i--] = 0);
: } while (i >= 0);
: free(x);
: }

l******a
发帖数: 14
15
每一层循环可以不都是3,而是limit[]数组中的值。
写的太好了。赞一个。

你这个是all permutation 吧?楼主的好像就是 enumerating没看
懂 limit[]是什么,赐教。给个driver
★ Sent from iPhone App: iReader Mitbbs 7.56 - iPad Lite

【在 d****n 的大作中提到】
: 你这个是all permutation 吧?
: 楼主的好像就是 enumerating
: 没看懂 limit[]是什么,赐教。给个driver

d****n
发帖数: 1637
16
还是不太明白楼主的specification 和大牛的implementation是不是很match

【在 l******a 的大作中提到】
: 每一层循环可以不都是3,而是limit[]数组中的值。
: 写的太好了。赞一个。
:
: 你这个是all permutation 吧?楼主的好像就是 enumerating没看
: 懂 limit[]是什么,赐教。给个driver
: ★ Sent from iPhone App: iReader Mitbbs 7.56 - iPad Lite

t****t
发帖数: 6806
17
This has been discussed once last year.
http://www.mitbbs.com/article_t1/Programming/31180587_31180631_

【在 d****n 的大作中提到】
: 还是不太明白楼主的specification 和大牛的implementation是不是很match
n******t
发帖数: 4406
18
这种事情常常要问问自己为什么需要干这件事.

【在 d*********6 的大作中提到】
: 本人编程菜鸟,因为科研上面需要自己写一个程序,所以硬着头皮在做,用C(就是本
: 科学的那点基础).
: 有一个很简单的问题请教各位大牛,希望有一个简单的解决方法,第一个解答的有5个
: 包子,之后五个每人一个包子。
: 希望写一个循环,循环的层数N是可变的。
: 举个简化的例子,当N=2的时候,循环是
: for(i[0]=0; i[0]<3; i[0]++)
: for(i[1]=0; i[1]<3; i[1]++){
: 循环体,里面会用到*i的值.
: }

t****t
发帖数: 6806
19
这个倒还算是常用的.

【在 n******t 的大作中提到】
: 这种事情常常要问问自己为什么需要干这件事.
n******t
发帖数: 4406
20
我的意思是,如果不想成多重循环,而是意识到无非就是遍历一个笛卡尔积的话,自然就知
道怎么写了.

【在 t****t 的大作中提到】
: 这个倒还算是常用的.
1 (共1页)
进入Programming版参与讨论
相关主题
问个c++问题如何实现N层循环嵌套
请教 一个关于loop的问题C++ Q110: Add without +
有人用haskell写程序吗请教一道c/c++题
请问遍历树可以用for loop来完成吗?printf("%s\n", NULL)的结果
How to have another func call printf with va_arg list ?python question
一年多前我发了几个贴子关于FP的想法一个简单的算法问题?
请教C数组定义问题Matlab函数变量问题,需要循环产生、添加到变量列中,该如何实(转载)
C++ func overload questionfunc调用结束时出错
相关话题的讨论汇总
话题: int话题: 循环话题: loop话题: void话题: printf