(部分经验援引自其他人)

问题描述:

在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。

在此,我们对该问题进行通用化,假定有n个人围成一个圈,按顺序进行拍号。从第一个人开始报数,当报到k时,这个人就要退出,剩下的人接着依次进行报数,直至最后仅剩一个人。问最后那个人是原来的第几号?

利用数组和指针解决该问题时,该问题的解决思路为:首先我将每一个人在数组中的值0,当其编号除以K的余数为0时,将该人在数组中的值赋予1,这样在循环过程中,在此遇得到该人时,就直接跳过(相当于该人退出)。源代码如下:

void find(int *p,int n,int t)
{int call_n=0,out_n=0,*q; q=p+n;while(1){if(*p==0){if(out_n==n-1)break;//限定只剩一个人时结束循环 call_n++;call_n%=t;//求余 if(call_n==0){*p=1;out_n++;}  }p++;if(p==q)p=(q-n);//当循环到数组末端时,重新循环 }printf("最后剩余编号%d\n",p+1-a);
}
int main(int argc, char *argv[]) {int n,call_n=0,out_n=0,*p,t;printf("请输入人数:\n");//输入人数 scanf("%d",&n);printf("请输入到几退出\n");//数到t时退出 scanf("%d",&t);int a[1000]={0};find(a,n,t);
}

C语言处理约瑟夫问题(丢手绢)相关推荐

  1. 数据结构与算法: 约瑟夫问题(丢手绢)

    数据结构与算法: 约瑟夫(丢手绢)问题(单向链表,双向链表解决) Tips: 采用java语言, 关注博主,底部附有完整代码 采用到的知识点: 单向环形链表 双向环形链表 单向 / 双向 环形链表出圈 ...

  2. Java中使用链表解决约瑟夫问题(丢手绢问题)

    文章目录 文章目录 前言 一.思路分析 二.代码实现 1.Chird类建立 2.链表创建 3.功能实现 总结 其他解决方式: Java中使用list解决约瑟夫问题https://blog.csdn.n ...

  3. 约瑟夫环 -- 丢手绢问题

    问题描述 约瑟夫环问题,也称为"丢手绢问题". 编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3-这样依次报),数到 m 的 士兵 ...

  4. Java中使用list解决约瑟夫问题(丢手绢问题)

    文章目录 文章目录 前言 一.思路分析 二.代码实现 总结 其他解决方式: Java中使用环形链表解决约瑟夫问题https://blog.csdn.net/qq_35813811/article/de ...

  5. C语言||约瑟夫问题(丢手绢问题)

    20518 用时:1h 编程数组或指针实现约瑟夫环问题. 题目为:编号为1,2- n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数).一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺 ...

  6. Algorithm One Day One -- 约瑟夫环(丢手绢问题)

    算法是编程的灵魂,是编程思想的精髓----Algorithm One Day One /******************************************************** ...

  7. 约瑟夫问题(丢手绢问题)

    问题复述:据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自 ...

  8. 数据结构与算法--我们来玩丢手绢(约瑟夫环问题)

    我们来玩丢手绢 昨天我们打扑克,今天我们丢手绢 丢手绢我们都知道这个游戏,他的由来由约瑟夫 (Josephus)提出来的 据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,3 ...

  9. 【51nod - 1875】 丢手绢(约瑟夫问题,可打表,用STL模拟)

    题干: 六一儿童节到了,小朋友们在玩丢手绢的游戏.总共有C个小朋友,编号从1到C,他们站成一个圈,第i(1<i<=C)个人的左边是i-1,第1个人的左边是C.第i(1<=i<C ...

  10. 丢手帕程序C语言,语言丢手绢教案中班

    语言丢手绢教案中班 导语:能主动大胆地参加游戏,在追逐.闪躲游戏中享受合作游戏的快乐.受活动的快乐.以下小编为大家介绍语言丢手绢教案中班文章,欢迎大家阅读参考! 语言丢手绢教案中班1 一.活动目标: ...

最新文章

  1. db9针232接口波特率标准_RS232和RS485与RS422接口的基础知识详细介绍
  2. jQuery Datatable 实用简单实例
  3. pycharm快敏捷键
  4. IOS之Masonry约束的使用
  5. javafx查找子节点_JavaFX技巧29:使布局忽略不可见的节点
  6. 找不到要去的声明_老汉将行李袋交由他人看管 去了一趟卫生间找不到人了.........
  7. 【Verilog HDL】第四章 模块的端口连接规则——污水处理模型
  8. 电脑屏保在哪里设置_手机屏保调成绿色能护眼?真的吗?
  9. nginx子目录301重定向到其他域名URL
  10. Android 应用基础知识(5)
  11. 如何找到一个好的Joomla主机提供商
  12. 网络安全:SQL 注入漏洞
  13. java 新手入门电子书_java从入门到精通第6版电子书 PDF高清版
  14. python前端开发工具篇
  15. 离线安装Silverlight 工具
  16. Mugeda(木疙瘩)H5案例课—教你玩转密室逃脱类H5-岑远科-专题视频课程
  17. 北京的哪些地方开的发票可参与国家税务局的摇奖
  18. nginx反向代理打印日志_Nginx 反向代理 log 显示真IP地址
  19. js中的浅拷贝与深拷贝
  20. @RunWith(SpringRunner.class)和@RunWith(SpringJUnit4ClassRunner.class)的区别

热门文章

  1. 【GBase 8a MPP数据库集群】使用 TABLE_FIELDS 指定加载 longblob 数据
  2. 小鱼厨子养成记(一):7月
  3. 2023基于微信小程序的游戏账号在线交易买卖平台(SSM+mysql)-JAVA.VUE(论文+开题报告+运行)
  4. 多媒体台式计算机各部分功能简介,计算机DIY基础知识
  5. Idea git local changes were not restore
  6. 图解Topo拓扑排序 例题洛谷P4017 最大食物链计数
  7. 【学习】日期函数:5、计算用户的平均次日留存率
  8. vscode中的python模块缺少的下载方式
  9. python识别图片内容并获取两个地点间的距离
  10. 文字检测(白底黑字)