没有合适的资源?快使用搜索试试~ 我知道了~
约瑟夫环问题(数组法)c语言实现
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 4 下载量 47 浏览量
2020-12-31
23:41:32
上传
评论
收藏 46KB PDF 举报
温馨提示
试读
1页
问题说明这个问题是以弗拉维奥·约瑟夫斯命名的,它是1世纪的一名犹太历史学家。他在自己的日记中写道,他和他的40个战友被罗马军队包围在洞中。他们讨论是自杀还是被俘,最终决定自杀,并以抽签的方式决定谁杀掉谁。约瑟夫斯和另外一个人是最后两个留下的人。约瑟夫斯说服了那个人,他们将向罗马军队投降,不再自杀。约瑟夫斯把他的存活归因于运气或天意,他不知道是哪一个机智的约瑟夫! 有N个编号为1~N的人围成一圈,现在每隔两个人(比如:1、4 之间隔了2、3)就将一个人淘汰出去,问最后剩下的是编号为几的人? 算法代码如下 代码如下:#include <stdio>#include <stdlib>
资源推荐
资源详情
资源评论
约瑟夫环问题约瑟夫环问题(数组法数组法)c语言实现语言实现
问题说明
这个问题是以弗拉维奥·约瑟夫斯命名的,它是1世纪的一名犹太历史学家。他在自己的日记中写道,他和他的40个战友被罗马
军队包围在洞中。他们讨论是自杀还是被俘,最终决定自杀,并以抽签的方式决定谁杀掉谁。约瑟夫斯和另外一个人是最后两
个留下的人。约瑟夫斯说服了那个人,他们将向罗马军队投降,不再自杀。约瑟夫斯把他的存活归因于运气或天意,他不知道
是哪一个机智的约瑟夫!
有N个编号为1~N的人围成一圈,现在每隔两个人(比如:1、4 之间隔了2、3)就将一个人淘汰出去,问最后剩下的是编
号为几的人?
算法代码如下
代码如下:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int people_count = 0;
int *peoples = NULL;
printf(“please input people number: “);
scanf(“%d”, &people_count);
if (people_count < 2){
printf(“can’t do Joseph”);
}
peoples = (int *)calloc(people_count, sizeof(int));
int i;
for(i = 0; i < people_count; i++){
peoples[i] = i+1;
}
i = 0;
int j = 0;
int rest = people_count;
while(rest){
if (i >= people_count){
i %= people_count;
}
if (peoples[i] == 0){
i++;
continue;
}
if (j++ % 3 ==0 && rest > 1){
printf(“kill people NO. %d\n”, peoples[i]);
peoples[i] = 0;
rest–;
}else if (rest==1){
printf(“NO. %d is alive”, peoples[i]);
rest–;
}
i++;
}
system(“pause”);
return 0;
}
您可能感兴趣的文章您可能感兴趣的文章:c语言字符数组与字符串的使用详解C语言中数组作为函数的参数以及返回值的使用简单入门c语言中数
组名a和&a详细介绍C语言从txt文件中逐行读入数据存到数组中的实现方法c语言实现把文件中数据读取并存到数组中C语言查
找数组里数字重复次数的方法C语言中数组的一些基本知识小结C语言之从字符数组中删除特定的字符C语言构建动态数组完
整实例详解C语言数组中是以列优先吗
weixin_38518722
- 粉丝: 0
- 资源: 845
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页