您的位置:首页 > 其它

简单约瑟夫环 系列(1)【简单一维数组】

2016-03-16 00:00 330 查看
摘要: 约瑟夫环的入门级解法。

约瑟夫问题简述:N个人围成一圈,从第一个开始报数,第M个将被杀掉,求最后剩下的那一个人。

eg.

如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。

1号位置的人活下来了。

话不多说,上代码。

时间复杂度为O(nm)

#include<iostream>
#include<stdio.h>
#define N 101
using namespace std;
int main(){
//freopen("in.txt","r",stdin);

int n,m;
bool a
={0};//0为人还在,1为人不在
int deathNum=0;//记录出局人数
int count=0;//用来数数
int i=0;//用来遍历
while(cin>>n>>m){
do{
++i;
if(i>n)
i=1;
if(a[i]==0)
count++;
if(count==m)
{
count=0;
a[i]=1;//此人已出局
deathNum++;
cout<<i<<' ';
}

}while(deathNum!=n);
}

//fclose(stdin);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  约瑟夫环