另一种解法:将数组全部置1,累计相加到报数,则将该位置置为0,意为该位出列,如此反复。关键在于:把数组作环状处理,这个手法已经演练很多遍了!
/*------------完整代码@映雪-------------*/ #include <iostream> using namespace std; int main() { int count=0,s=0,i,j=-1,n=3,m=3; int a[100]; for(i=0;i<n;i++)/*将数组全部置1*/ a[i]=1; while(count<n) { j=(j+1)%n; s=s+a[j]; if(s==m)/*累加到报数*/ { a[j]=0;/*位置置0,表示出列*/ s=0; count++;/*出列计数+1*/ printf("%d ",j+1); } } return 0; }