约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。 
例如N=6,M=5,被杀掉的人的序号为5,4,6,2,3。最后剩下1号。

输入两个整数N,M 
比如 6 5 
输出被杀掉的人的序号 
比如5 4 6 2 3 1 
再比如: 
输入 11 3 
输出 3 6 9 1 5 10 4 11 8 2 7

分析:这里用数组实现约瑟夫问题。用数组从1开始,记录每个人是否存活,当计数器大于人数n时模n置1。每当遍历到活人时报数加一,当报数为m时杀人,报数置0。当仅剩一人时,报数到m则计数器指向此人。按照顺序输出即可。

代码:

#include<iostream>
#define MAX 1000
using namespace std;
int main()
{int people[MAX] = {0};int n, m;int num = 0;int dead = 0;cin >> n >> m;int i = 1;while(1){if(i > n)i %= n;if(people[i] == 0)num++;if(dead != n - 1 && num == m){num = 0;dead++;people[i] = 1;cout << i << ' ';}if(dead == n - 1 && num == m){cout << i << endl;break;}i++;}return 0;
}

丢手帕问题(约瑟夫问题-数组实现)相关推荐

  1. 约瑟夫问题的理解与解决(丢手帕问题)

    又到了面试题的总结手机,下面让我们来看看如何理解与求解约瑟夫问题吧! 什么是约瑟夫问题? 简单来讲(小编个人理解):一堆人想要选择一个人来做事情(需要多个人),就选择一个数,排序到这个数的人去做这件事 ...

  2. 约瑟夫问题(丢手帕问题)

    /** * 作者:徐守威 * 功能:约瑟夫问题(丢手帕问题) * 具体问题:设编号为1,2,3....n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始 * 报数,数到m的那个 ...

  3. 丢手帕问题(约瑟夫问题)

    设编号为1,2,n的n个人围坐一圈,约定编号为K(1=<K<=n)的人从1开始报数,数到m的人出列,她的下一位又从1开始报数,数到m的人又出列,以此类推直到所有人都出列,由此产生一个出队序 ...

  4. 丢手帕程序C语言,约瑟夫问题,即丢手帕游戏

    /** @author sunqian @time 2015.1.27 @功能 约瑟夫(丢手帕)问题 @描述 n个小孩围坐,从k位小孩开始开始约定一个数m并开始轮流报数,数到m的小孩出列直到列表为空, ...

  5. 约瑟夫问题,即丢手帕游戏

    /** @author sunqian @time 2015.1.27 @功能 约瑟夫(丢手帕)问题 @描述 n个小孩围坐,从k位小孩开始开始约定一个数m并开始轮流报数,数到m的小孩出列直到列表为空, ...

  6. 丢手帕java_java基于双向环形链表解决丢手帕问题的方法示例

    本文实例讲述了java基于双向环形链表解决丢手帕问题的方法.分享给大家供大家参考,具体如下: 问题:设编号为1.2--n的几个小孩围坐一圈,约定编号为k(1= 我们现在用一个双向环形链表来解这一问题. ...

  7. 丢手帕问题 java_丢手帕问题,java实现

    今天偶然发现一个很经典的算法问题:丢手帕问题.问题的具体描述是:N个人围成一圈,然后从第A个人开始报数(报数从1开始).报数为B的人出列,然后后面的人从新开始报数,请问,最后一个人是多少号. 刚开始觉 ...

  8. 丢手帕问题 java_java基于双向环形链表解决丢手帕问题的方法示例

    导读热词 本文实例讲述了java基于双向环形链表解决丢手帕问题的方法.分享给大家供大家参考,具体如下: 问题:设编号为1.2--n的几个小孩围坐一圈,约定编号为k(1= 我们现在用一个双向环形链表来解 ...

  9. 丢手帕问题 java_丢手帕问题 (java实现)

    /** *@author zhouhong *@fuction:丢手帕问题 */ package com.zhouhong10; import com.zhouhong10.*; public cla ...

最新文章

  1. select * 和 select 所有字段的区别
  2. Treelabeling 异或性质,位运算,染色法,二分图(2100)
  3. C#中的类02:构造对象
  4. 计算机信息安全技术计算题,计算机信息安全技术练习题.doc
  5. IIS与Tomcat的区别
  6. python面向对象——类(下)
  7. c语言文件打开幕式,c语言奥运会开幕式
  8. 【全网最全】100款七夕节情人节表白网页制作HTML+CSS+JS
  9. Quartus II13.1破解
  10. android苹果耳机音量调节,安卓线控耳机怎么调节音量大小?
  11. 国庆在家写了个简易版的在线简历网站
  12. Golang 开发之Cobra初探
  13. PADS PCB如何进行模块复用
  14. 交换机SNMP V3版本配置
  15. 个人看法---如何做一个视频聊天室?
  16. [附源码]java毕业设计房屋租赁系统
  17. 2021年电工(初级)考试报名及电工(初级)复审模拟考试
  18. make menuconfig缺少ncurses
  19. 用TIA Portal+S7Client暴力破解西门子S7-300/400密码
  20. Mac下的几个免费杀毒软件

热门文章

  1. 【Py】基于Python的身份证读卡器二开全记录
  2. STM32使用SPI方式读写SD 卡
  3. python 实现maltab中离散正弦变换dst及其反变换idst
  4. 可编程交换机P4网络资源
  5. 什么是熵(entropy)?
  6. C++中的swap函数
  7. 浅谈客户端,服务器端,终端
  8. 电脑如何进入bios设置?
  9. Spring依赖注入有哪些方式?
  10. java中的高内聚和低耦合和接口的简单理解