对于任意长度n的数组A,我想用A中的所有元素组合填充anxm数组B,其中包括这些元素的所有可能顺序。例如,如果 A = {1, 2, 3} 和 m = 2,我想得到 B:
11
12
13
21
22
23
31
32
33
在 C/C++ 中执行此操作的有效方法是什么?谢谢!
编辑:这是我想出的工作(数据在类梳子中,它基本上是一个带有一些附加技巧的矩阵类):
void combs::setCombs (int arr[], int n, int m) {
int z, tmp, repeat;
int max = (int (pow(double (n), double( m ))));
for (int i = 0; i < m; i++) {
z = 0;
repeat = int (pow( double (n), double (i)));
for (int j = 0; j < repeat; j++) {
for (int k = 0; k < n; k ++) {
for (int p = 0; p < max/(n*repeat); p ++) {
cout << arr[k] << endl;
data[z*ROWS + i] = arr[k];
z++;
}
}
}
}
}