?? 約瑟夫環(huán).cpp
字號:
#include"string.h"
#include"stdio.h"
#include"math.h"
void main()
{
int a[20000],i,j,m,n,p,s,t;
scanf("%d%d%d",&n,&s,&m);//n為總個數(shù),s為從第s個開始數(shù)1,數(shù)到m的出列
for(p=0;p<n;p++)
scanf("%d",&a[p]);
//a[p]=p+1;
s=s-2;
for(i=0;i<n;i++)
{
j=0;
while(j<m)
{
do{s=(s+1)%n;}
while(a[s]==0);
j++;
}
// m=a[s];//把下一個人的密鑰賦給m
printf("%d ",a[s]);
a[s]=0;
}
/*for(t=0;t<n;t++)
{
if(a[t]!=0)
printf("%2d\n",a[t]);
}*/
}
/* 約瑟夫環(huán):
已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。
從編號為k的人開始報數(shù),數(shù)到m的那個人出列;他的下一個人又從1開始報數(shù),
數(shù)到m的那個人又出列;依此規(guī)律重復下去,直到圓桌周圍的人全部出列。
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -