迭代每个选项

时间:2014-02-14 19:20:55

标签: c

让我说我有这个数组

int array[] = {0x00, 0x00, 0x00};

我想对这个数组的每个可能变体执行某个函数(假设数组中的每个变量的最小值为0x00,最大值为0xA)。

int array[] = {0x00, 0x00, 0x00};
*Some Loop*
{
     someFunction(array);
}

换句话说,我希望在每个可能的排列上(从{0x00,0x00,0x00}到{0xA,0xA,0xA})执行 someFunction ,但是我很难这样做所以我在寻求帮助。

我希望我提前解释好了,先谢谢!

2 个答案:

答案 0 :(得分:5)

for(int i=0x00;i<=0xA;++i){
   for(int j=0x00;j<=0xA;++j){
       for(int k=0x00;k<=0xA;++k){
          someFunction(i,j,k);
       }           
   }
}

答案 1 :(得分:2)

更通用的解决方案就像

someRecursiveFunction( int *arr, int curbyte, int min, int max)
{
 int n;
 if( curbyte == 0 ) someFunction( arr );
 else for( n = min; n <= max; n++ ) {
  arr[curbyte-1] = n;
  someRecursiveFunction( arr, curbyte-1, min, max );
 }
}

然后在你的主要:

someRecursiveFunction( array, 3, 0, 0xA );