如何在数组0-9中找到5个数字的所有可能组合

时间:2016-10-30 05:51:26

标签: c++

我是c ++编程的新手,我想得到一个包含5个元素的一维数组的所有可能组合,没有数字重复,例如它以00001,00002,00003,...,99999开头。

int count(){

while (i<100000){  //loop to go thru all possible combinations

  //std::cout<<i<<"\t";
  if (i>=10000){

num(i);
print();

  }


  i++;
}

}

void num(int i){/ *将所有数字排序到i * /

数组的方法

takeNumbersFromUser = I;

for( n=0;n<arraySize;n++){
  if (control==0){
    ar[n]=takeNumbersFromUser % 10;
  }
  else if (control==1){
    temp= takeNumbersFromUser % 100;
    ar[n]=temp/10;
  }
  else if (control==2){
    temp = takeNumbersFromUser % 1000;
    ar[n] = temp/100;
  }
  else if (control==3){
    temp = takeNumbersFromUser % 10000;
    ar[n] = temp/1000;
  }
  else if (control==4){
    temp = takeNumbersFromUser % 100000;
    ar[n] = temp/10000;
  }
  control++;
}

}

void print (){  //print out 
  std::cout<<"\n\n\tyou entered "<<takeNumbersFromUser<<"\n\n";
  for (n=5;n>=0;n--){
    std::cout<<ar[n]<<"\t";
  }

}

}  谢谢。

1 个答案:

答案 0 :(得分:0)

喜欢什么?

// Size of parent array (10^length)
int size = 100000;
// Length of number
int length = 5;
// Two dimensional array to hold the numbers
int** matrix = new int*[size];
// Create all elements in the array
for(int i=0;i<size;i++) {
    matrix[i] = new int[length];
    // Temporary variable to "play" with 'i'
    int temp = i;
    for(int j=length-1;j>=0;j--) {
        matrix[i][j] = temp%10;
        temp /= 10;
    }
}

我相信这很简单,不需要进一步解释。 如果有,请询问,我会提供

修改

根据建议,您可以将int *数组替换为: new vector<int>[size]

然后在for j循环中,无需创建新数组,您只需使用:matrix[i].push_back(temp%10)

最后,为了打印这个,你可以做一个新的for i循环,遍历向量数组,然后在里面有一个foreach循环,类似于: for(int n : v) std::cout << n << " ";

你可以在这里进行管理。