【发布时间】:2013-03-22 13:55:57
【问题描述】:
我想通过向后递增来遍历数组中的所有值组合。
所以让我们有一个数组
int array[10] = {0,0,0,0,0,0,0,0,0,0};
我想这样增加它:{0,0,0,0,0,0,0,0,0,1} > {0,0,0,0,0,0,0,0, 0,2}...{p-1,p-1,p-1,p-1,p-1,p-1,p-1,p-1,p-1,p-1}。
例如较小的数组,p=3:{0,0,0}>{0,0,1}>{0,0,2}>{0,1,0}>{0,1,1 }>{0,1,2}...{2,2,2}
数组可以是 sizeof(int)*m 大,其中 1
有人可以帮我解决这个问题吗?
编辑:对不起,忘了这个..
好的,很抱歉造成混淆,但我还有一个条件..
那个数组不会是那种形式。这将是这样的 example
int array[10] = {0,0,0,0,0,0,0,0,0,0};
int help[10] = {3,4,0,1,0,0,3,0,1,0};
我想获得数组[help[]!=0] 中的值组合,在这种情况下 数组[0],数组[1],数组[3],数组[6],数组[8] 所以->
int array[10] = {0,0,0,0,0,0,0,0,0,0};
int array[10] = {0,0,0,0,0,0,0,0,1,0};
int array[10] = {0,0,0,0,0,0,0,0,2,0};
int array[10] = {0,0,0,0,0,0,1,0,0,0};
int array[10] = {0,0,0,0,0,0,1,0,1,0};
int array[10] = {2,2,0,2,0,0,2,0,2,0};
p=3
类似 for() 循环的内容将变为 i=0,1,3,6,8,其中值为 i=help[i]!=0。
【问题讨论】:
-
我不确定我是否理解,所以你是在表示以 4 为底的数字?
-
基本上表示以 base(p) + 1 为单位的数字。在寻求帮助之前,您需要展示您的算法尝试。
-
是的,它应该在 base(p) 中但在那里犯了一个错误:) 会纠正它
-
如果您知道如何将 1 加到多位数字上,那么您已经知道如何操作了。
-
顺便把每个值都设置为0,你可以使用
= {0};来设置。