我是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";
}
}
} 谢谢。
答案 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 << " ";
你可以在这里进行管理。