首页 > 代码库 > 桟和队列--约瑟夫问题

桟和队列--约瑟夫问题

 

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>   int main()  {      int i,n,m,f,r,a[1000];      scanf("%d%d",&n,&m);      for(i=0;i<=n;i++)          a[i]=i;      f=1;          /*队首*/      r=n+1;        /*队尾*/      while(n!=1 && n--)      {          for(i=1;i<m;i++)              a[r++]=a[f++];          f++;      }      printf("%d\n",a[f]);      return 0;  }