|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ 约瑟夫问题求巧妙解答
我的收件箱(0)
共有
541
人关注过本帖
标题:
约瑟夫问题求巧妙解答
只看楼主
加入收藏
li_danwang
来 自:鄂州
等 级:
业余侠客
帖 子:112
专家分:203
注 册:2010-11-12
结帖率:
100%
楼主
收藏
已结贴
√
问题点数:20 回复次数:2
约瑟夫问题求巧妙解答
n个人围成一圈,从第S个人开始报数1,2,…,m,数到m的人出圈,然后从出圈的下一个人开始重复此过程,直到全部人出圈。要求在给出m,n,s后,能输出出圈序列。求大哥大姐们提示点思路指点下
没事来C一下...
2010-12-03 21:39
举报帖子
使用道具
赠送鲜花
无名可用
等 级:
业余侠客
帖 子:79
专家分:259
注 册:2010-7-27
第
2
楼
收藏
得分:10
假设报到3的人出列
void Select(int a[],int len,int s)
{
int i=s
;//记录开始报数的位置,注意s要小于len
int j=0
;//记录报数
int count=0
;//表示在开始前有0个人出列
while(count<len-1)
{
j++;
if(j==3 && a[i]!=0
)//报到3,且该人还未出列
{
a[i]=0;//出列
j=0;
}
i++;
//下面两条语句是使其报数循环起来
if(i==len)
i=0;
}
}
这是一个简单点的解法,当然还可以用队列实现,思路都一样
2010-12-03 22:03
举报帖子
使用道具
赠送鲜花
南国利剑
等 级:
贵宾
威 望:
29
帖 子:1165
专家分:3536
注 册:2010-4-12
第
3
楼
收藏
得分:10
用队列写比较直观。
南国利剑
2010-12-03 23:33
举报帖子
使用道具
赠送鲜花
3
1/1页
1
快速回复:
约瑟夫问题求巧妙解答
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013175 second(s), 7 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved