圍圈報數遊戲(C程式設計第四版第八章第5題)
阿新 • • 發佈:2018-12-13
題目描述:有n個人圍成一圈,順序排號,從第一個人開始報數,從1到3報數,凡報到3的人退出圈子,問最後留下來的幸運者是原來的幾號。
#include<stdio.h> #include<stdlib.h> #include<assert.h> #include<math.h>
#define DANGER_NUM 3 int CyclicGame(int n) { int *arr=(int*)malloc(n*sizeof(int));//建立陣列存放參與者資訊 int count=0;//記錄報數 int i; int num=n;//幸運者數量 assert(arr!=NULL); for(i=0;i<n;i++)//初始化為活動狀態 { *(arr+i)=1; } while(num>1)//幸運者為1時結束遊戲 { for(i=0;i<n;i++) { if(*(arr+i)==1) { count++; if(count==DANGER_NUM) { *(arr+i)=0; num--; count=0; } } } } for(i=0;i<n;i++) { if(*(arr+i)==1) { return i; } } return -1;//查詢失敗,程式出錯 } int main() { printf("%d\n",CyclicGame(11)); return 0; }