习题8-4 报数
報數游戲的規則
以下是我的解決代碼:
#include <stdio.h>
#define MAXN 20void CountOff( int n, int m, int out[] );int main()
{int out[MAXN], n, m;int i;scanf("%d %d", &n, &m);CountOff( n, m, out ); for ( i = 0; i < n; i++ )printf("%d ", out[i]);printf("\n");return 0;
}
void CountOff( int n, int m, int out[] )
{int die=1;int number=0;int i=0;for(i=0;i<n;i++)out[i]=0;i=0;while(die!=n+1){while(number!=m){if(i>=n){i=0; continue;} if(out[i]==0){number++;i++;}elsei++;}if(out[i-1]==0){out[i-1]=die;die++;number=0;}elsei++;}
}
總結一下這個題的思路:1.首先讓這n個人都以0表示他們沒有退出游戲的狀態,以number來數每次的第三個人,以die表示退出游戲的人數以及第幾個退出游戲。2.第一次從第一個人開始數到第三個人,每次數一個人的時候都需要判斷他是否還在游戲,不在的話就數下一個人。每次都需判斷i是否大于等于了n,因為out數組中只到out[n-1]3.當number=3后,跳出第一個循環,判斷這個人(注意是i-1個人,因為i隨每次的number的增加而增加的)是否還在游戲,不在則判斷下一位。
注意
1.die是可以等于n的,因為第n個人還需要被die賦值。
2.i歸零的狀態是i>=n,因為i為數組的計數器,只到out[n-1]。
3.給out數組中的元素賦die時,一定是第i-1個,因為i在前面是加1了的。而且要注意number的歸零。
總結
- 上一篇: 5g信号云端服务器,随着5G万物互联的到
- 下一篇: 习题8_6与习题9_2