这类问题其实跟M进制是同一个问题。
int
permutation(int pos, int cycle)
{
int res_row = (int)pow(cycle, pos);
int array_result[res_row][pos]; /*存储排列结果*/
int i = 0, j;
for(j = 0; j < pos; j++){
array_result[0][j] = 1; /*0或是1就是表示起始的第一个数*/
}
print_row(0); /*显示每行*/
for(i = 1; i < res_row; i++){
for(j = 0; j < pos; j++){ /*继承上一次排列结果*/
array_result[i][j] = array_result[i - 1][j];
}
j--;
array_result[i][j]++; /*最外的位置增1*/
while(array_result[i][j] > cycle){ /*逐层向内调整每一层*/
array_result[i][j] = 1;
array_result[i][--j]++;
}
print_row(i);
}
return 0;
}
如果想实现M进制的话,就把数组中的一行组织成一个数就OK了!
阅读(1007) | 评论(0) | 转发(0) |