这道题刚开始我理解错了,以为输出的是数组内先后输入到out数组里的数字,其实Out里存储的是原数组中每一次元素退出的顺序编号。
我附一张模拟报数的图,输入为 5 2
黄字是模拟报数,红字是顺序,最底下一排红字就是out数组里的东西了
void CountOff(int n, int m, int out[]) {
int b[MAXN];
int i = 0, j = 0, count = 0;
for(i=1;i<=n;i++){
b[i]=i;
}
i=0;
while(1){
if (b[i] != 0) {
j++;//黄字
if (j == m) {
count++;//红字
out[i] = count;
b[i] = 0;
j = 0;
}
}
i++;
if (i == n) {
i = 0;
}
if (count == n) {
break;
}
}
}