迴圈佇列 約瑟夫問題 阿新 • • 發佈:2019-01-23 約瑟夫問題 Time Limit: 1000MS Memory limit: 65536K 題目描述 n個人想玩殘酷的死亡遊戲,遊戲規則如下: n個人進行編號,分別從1到n,排成一個圈,順時針從1開始數到m,數到m的人被殺,剩下的人繼續遊戲,活到最後的一個人是勝利者。 請輸出最後一個人的編號。 輸入 輸入n和m值。 輸出 輸出勝利者的編號。 示例輸入 5 3 示例輸出 4 提示 第一輪:3被殺第二輪:1被殺第三輪:5被殺第四輪:2被殺 #include<stdio.h> #define MAX 100 int front=MAX-1; int rear=MAX-1; void enqueue(int q[],int x)//入隊演算法 { rear=(rear+1)%MAX; q[rear]=x; } int dequeue(int q[])//出隊演算法 { front=(front+1)%MAX; return q[front]; } int main() { int m,i,n; int q[MAX],k=0,y; scanf("%d%d",&m,&n); for(i=1;i<=m;i++) enqueue(q,i); while(front!=rear) { y=dequeue(q); k++; if(k%n==0) continue; else enqueue(q,y); } printf("%d\n",y); return 0; }