约瑟夫问题
来源:互联网 发布:ubuntu root用户提权 编辑:程序博客网 时间:2024/06/05 06:02
题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到m报数),凡报到m的人退出圈子,问最后最后留下的是原来第几号的那位.
提示:用数组完成
#include<iostream>
using namespace std;
int main()
{
bool a[101]={0}; //注意务必初始化
int n,m,f=0,t=0,s=0;
cin>>n>>m;
do
{
++t;//逐个枚举圈中的所有位置
if(t>n)
t=1;//数组模拟环状,最后一个与第一个相连
if(!a[t])
s++;//第t个位置上有人则报数
if(s==m)//当前报的数是m
{
s=0;//计数器清零
cout<<t<<" ";//输出被杀人编号
a[t]=1;//此处人已死,设置为空
f++;//死亡人数+1
}
}while(f!=n);//直到所有人都被杀死为止
return 0;
using namespace std;
int main()
{
bool a[101]={0}; //注意务必初始化
int n,m,f=0,t=0,s=0;
cin>>n>>m;
do
{
++t;//逐个枚举圈中的所有位置
if(t>n)
t=1;//数组模拟环状,最后一个与第一个相连
if(!a[t])
s++;//第t个位置上有人则报数
if(s==m)//当前报的数是m
{
s=0;//计数器清零
cout<<t<<" ";//输出被杀人编号
a[t]=1;//此处人已死,设置为空
f++;//死亡人数+1
}
}while(f!=n);//直到所有人都被杀死为止
return 0;
}
这个程序有几处智慧之处:
首先,它实现了数组的环化。
并且用数组进行标记,置一即失效。
最后有一个独立的计数器,可以进行清零,形成循环
0 0
- 约瑟夫问题、约瑟夫环
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- python2.7爬取京东商品评论
- usaco5.1.1 Fencing the Cows
- ArcSoft's Office Rearrangement
- 利用predis操作redis方法大全
- F
- 约瑟夫问题
- hdu1018
- UCOSIII编写无人机飞控程序——第一篇
- ndarray对象
- 软件设计中的Ping Pong 操作
- Android 中拍照、相册选择、裁剪照片
- Bootstrap实现基于carousel.js框架的轮播图效果(无过渡动画)
- Eclipse neon中集成Tomcat
- Faster-RCNN算法精读