遍历每个选项

  • 本文关键字:选项 遍历 c
  • 更新时间 :
  • 英文 :


>假设我有这个数组

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

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

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

换句话说,我想对每个可能的排列(从{0x00,0x00,0x00}到{0xA,0xA,0xA})执行一些功能,但是我这样做时遇到了麻烦,所以我寻求帮助。

希望我解释得当,提前谢谢!

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);
       }           
   }
}

更通用的解决方案是这样的

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 );

最新更新