【基础试题】约瑟夫环问题怎么做

【基础试题】约瑟夫环问题

Time Limit:1000MS Memory Limit:65536K
Total Submit:421 Accepted:281

Description

  有M个人,其编号分别为1-M。这M个人按顺序排成一个圈(如图)。现在给定一个数N,从第一个人开始依次报数,数到N的人出列,然后又从下一个人开始又从1开始依次报数,数到N的人又出列...如此循环,直到最后一个人出列为止。

Input

  输入只有一行,包括2个整数M,N。之间用一个空格分开(0 < n <= m <= 100)。

Output

  输出只有一行,包括M个整数

Sample Input

  8 5
Sample Output

  5 2 8 7 1 4 6 3
Source

xinyue

3个回答

public class test2 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.print("请输入总人数:");

int totalNum = scanner.nextInt();

System.out.print("请输入报数的大小:");

int cycleNum = scanner.nextInt();

yuesefu(totalNum, cycleNum);

}

public static void yuesefu(int totalNum, int countNum) {

// 初始化人数

List start = new ArrayList();

for (int i = 1; i <= totalNum; i++) {

start.add(i);

}

//从第K个开始计数

int k = 0;

    while (start.size() >0) {  
        k = k + countNum;  
        //第m人的索引位置  
        k = k % (start.size()) - 1;  
       // 判断是否到队尾  
        if (k < 0) {  
            System.out.println(start.get(start.size()-1));  
            start.remove(start.size() - 1);  
            k = 0;  
        } else {  
            System.out.println(start.get(k));  
            start.remove(k);  
        }  
    }  
}  

}

qq_36502301
qq_36502301 可不可以用循环单链表实现呢,只定义一个尾指针
3 年多之前 回复
_fenghun
雪无殇 原理就是,每次从数组中删除报数的那个人,然后在重新开始。
3 年多之前 回复

写了个比较笨的方法

    public static void showMessage(int m,int n){
        if(n>m)return;
        String info = "";
        for(int i=1;i<=m;i++){
            for (int j = 1; j <= m; j++) {
                info+=j;
            }
        }
        for (int i = 0; i < m; i++) {
            String reslt =info.substring(n-1, n);
            info = info.substring(n)+info.substring(0, n-1);
            info = info.replaceAll(reslt, "");
            System.out.print(reslt+" ");
        }

    }
qq_36502301
qq_36502301 用循环单链表怎样做
3 年多之前 回复
 /**
     * 
     * @param n 几只猴
     * @param k 数到几
     * @param begin 从第几只开始
     */
    public static void test(int n, int k, int begin) {

        List<String> list = new ArrayList<String>();
        for (int i = 0; i < n; i++) {
            list.add(String.valueOf(i + 1));
        }

        int lastChuju = 0;
        boolean isBegin = true;

        while (list.size() > 1) {
            int size = list.size();

            if (isBegin) {
                isBegin = false;
                lastChuju = k + begin;
            } else {
                lastChuju = lastChuju + k;
            }

            if (lastChuju > size) {
                lastChuju = lastChuju % size;
            }
            lastChuju -= 1;
            System.out.println("猴子出局: " + list.get(lastChuju));
            list.remove(lastChuju);

        }

        System.out.println("猴子大王:" + list.get(0));

    }
qq_36502301
qq_36502301 循环单链表怎样实现
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
约瑟夫环(约瑟夫问题的变形,LA 3882)
只是问最后剩下的是哪个,而没有问具体是怎么删除的,所以不需要完全模拟,只需要模拟编号就好了。 一开始有n个,分别编号为   0,1,2,3,...n-1。 删除第k个,即编号为k-1的那个,那么删除后剩下 0,1,...k-2,k,...,n-1。 然后对n-1个物品重新编号,以便递归调用。 0        n-k 1        n-k+1 ...  
用LabVIEW编写的解约瑟夫环问题
用LabVIEW编写的解约瑟夫环问题的程序。可以自己设置参数和变量。
《C++语言基础》实践参考——Josephus(约瑟夫环)问题
返回:贺老师课程教学链接  项目要求【项目-Josephus(约瑟夫环)问题】n个小孩子围成一圈,从第一个小孩子开始顺时针方向数数字,到第m个小孩子离开,这样反反复复,最终只剩下一个小孩子,求第几个小孩子留下?    提示:约瑟夫环即是一个首尾相连的链表,在建立好这个环以后,从头结点开始,每次间隔m孩子删除一个结点,直至只余下一个结点(删除了n-1个)。    参考下面的代码,也可以自行设计类。/
约瑟夫环问题-C++编程实现
原题:一组人(n)个,围成一圈,从某人开始数到滴三个的人出列,在接着从下一个人开始数,最终输出最终出列的人(约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3,...,n)分别表示)围坐在一张圆桌周围。从编号k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列:依此规律重复下去,知道圆桌周围的人全都出列。
约瑟夫环问题详解
在牛客网上做到一道题,是约瑟夫环的变型,所以借此学习一下新知识,并且巩固一下对题目意思的理解,这一篇仅作约瑟夫环问题的解释,下一篇再写题目: 1.首先,我们先来了解一下什么是约瑟夫环问题: 讲一个比较有意思的故事:约瑟夫是犹太军队的一个将军,在反抗罗马的起义中,他所率领的军队被击溃,只剩下残余的部队40余人,他们都是宁死不屈的人,所以不愿投降做叛徒。一群人表决说要死,所以用一种策略来先后杀...
约瑟夫环问题 java代码实现(高效率)
问题来历编辑 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。一开始要站在什么
经典面试题-约瑟夫环
题目描述:0, 1, …, n - 1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。输入:每组数据一行,包含2个整数n和m,分别表示0 到 n - 1 的序列和指定删除的第m个数字。输出:输出能保留到最后的那个数字。样例输入:5 3样例输出:3思路分析: 除了暴力破解其实还有一种方法就是找到n个数字和n-1个数字的之间的关系,利用动态规划的思想
C++经典题目:约瑟夫环问题
问题描述: 有n个人围成一圈,顺序排号。从第一个人开始报数(1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。 分析: 首先由用户输入人数n,然后对这n个人进行编号【因为如果不编号的话,我们就不能知道最后是哪位童鞋留下来了:)】 然后就开始了一圈一圈的循环,不断形成新的圈子,不断有人被淘汰,那么循环到什么时候截止呢?对只剩最后一个人,也就是说淘汰n-1了个人的时候,这个时候
C++第15周项目3 -约瑟夫环
课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/9018813【项目3】Josephus(约瑟夫环)问题  n个小孩子围成一圈,从第一个小孩子开始顺时针方向数数字,到第m个小孩子离开,这样反反复复,最终只剩下一个
数据结构 约瑟夫环问题
实验一  线性表的应用 实验目的和要求: 通过实验进一步理解线性表的逻辑结构和存储结构,提高使用理论知识指导解决实际问题的能力,熟练掌握链表的实际应用。 主要内容: 题目1 :Josephus环问题 问题描述: 约瑟夫(Joseph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时
约瑟夫环C++实现很经典的做法
原文地址:http://www.cnblogs.com/hanxi/archive/2012/10/10/2718413.html /* *******循环链表解决约瑟夫环问题******* * 问题:约瑟夫环 * 有编号从1到N的N个人坐成一圈报数,从第K个人开始报数,报到M的人出局, * 下一位再从1开始报数,如此持续,直止剩下一位为止,报告此人的编号X。 * 输入N,K,M,求出X。
基本约瑟夫环问题详解
基本问题描述: 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为1的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后结果+1即为原问题的解。通常,我们会要求输出最后一位出列的人的序号。那么这里主要研究的是最后一个出列的人的序号要怎么确定。 当
程序员面试宝典之数据结构基础----循环链表(约瑟夫环问题)
关于循环链表,即单链表的为指针指向头结点,当然在建立循环链表的时候可以将链表的为指针指向头结点,但本例用的是先建立一个只有一个节点的循环链表(即next指针指向自己结点),然后再在此循环链表中插入节点,实现最终的循环链表(见代码),这里我默认指定了一个“伪头结点”的节点(即刚开始建立的节点),即使在后面寻找第K个节点的时候也是用到了这个“伪头结点”。 #include #include
约瑟夫环问题的Java版解法
详细推导了约瑟夫环问题的Java版实现方法,从包含两个参数拓展到四个参数。最后给出了常规链表法的Java实现代码,以供参考。
约瑟夫环-两种实现方法,两种时间复杂度
已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为r的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。求最后出列的人的编号。 第一种方法就是使用循环链表的方法,因为这种方法在删除一个节点后,对于其他节点的位置改动不用太大。这是一种很浪费时间的方法,每次都删除第m个数字(注意题意包含摸的概念),也
循环单链表实现约瑟夫环问题
问题: 编号为1,2,3,,,n的n个人按顺时针围坐一起,每人有一个正整数密码。一开始任选一个整数作为报数上限值m,从第一个人开始按顺时针向自1开始顺序报数,报到m的停止,出列,并把出列的人手中的密码作为新的m值,从接下来的下一个人接着从一开始报数,依次所有人出列 利用单向循环链表实现,按照数列的顺序的打印个人的编号 例如,m=6; n=7; 7个人的密码分别为 3 1 7 2 4 8
约瑟夫环问题的数学解法
问题描述:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
约瑟夫环问题的几种解法
一、问题的来历     据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲在一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。问题是,给定
数据结构(二)java解决约瑟夫环的两种方法
使用组数解决约瑟夫环问题 使用队列解决约瑟夫环问题
10行Python代码解决约瑟夫环(模拟)
写这篇文章是因为看到别人博客里用了很长一个篇幅(超过50行)去解决一个约瑟夫环问题,而且还是用以简洁著称的python,另外,如果你用X度搜索python 约瑟夫,看到得前几条都是错的,真是好悲剧。 总的来说,就是误人子弟。 虽然,用模拟去解决这个约瑟夫环问题效率是很低的,但是,这更容易理解。 先上代码。 def josephus(n,k): link=range(1,n+1)
约瑟夫环的问题解决方法与分析
约瑟夫环的问题 相信大家都听过约瑟夫环的问题,据说著名犹太历史学家 Josephus有过以下的故事: 在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹 太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈, 由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到 所有人都自杀身亡为止。然而Jo
约瑟夫环问题及其尽可能的优化
约瑟夫问题描述: n个人围成一个圈,编号为0,1,2,..,n-1,设定一个常数k,然后从0号开始从1依次报数,报到k的那个人退出圈,后面一个人继续从1开始报数,依次类推,求最后剩下的人的编号 方法1: 模拟游戏过程的方法,将n个人串成一个循环链表,不停地去遍历链表,直到最后剩下一个结点。 优点:方法直观,写起来很容易 缺点:模拟了全部游戏过程,非常耗时,并且在n较大时占用较大的
约瑟夫环(数学高效率解法,很详细)
 5.5.4 用数学方法解约瑟夫环(1) 原文copy:http://book.51cto.com/art/201403/433941.htm 5.5.4  用数学方法解约瑟夫环(1) 上面编写的解约瑟夫环的程序模拟了整个报数的过程,程序运行时间还可以接受,很快就可以出计算结果。可是,当参与的总人数N及出列值M非常大时,其运算速度就慢下来。例如,当N的值有上百万,M的值
约瑟夫环问题的解释及代码实现
解决问题的核心步骤:(程序的基本算法)   1.建立一个具有n个链结点,无头结点的循环链表;   2.确定第1个报数人的位置;   3.不断地从链表中删除报数报到指定数num的那个人的链结点,直到链表剩一个节点。   pNode JosephCycle(pList* pplist, int num) //pplist是传进来的带环链表,num为出列者喊到的数
约瑟夫环 (队列实现)
#include "stdio.h" #include #define MAXQSIZE 100 #define TRUE 1 #define OK 1 #define FALSE 0 #define OVERFLOW 0 typedef struct{ int *elem; int front; //队头指针 int rear; //队尾指针 }SeQueue
约瑟夫环问题(运用递推)
利用数学推导,下面是推导的过程:         (1)第一个被删除的数为 (m - 1) % n。         (2)假设第二轮的开始数字为k,那么这n - 1个数构成的约瑟夫环为k, k + 1, k + 2, k +3, .....,k - 3, k - 2。做一个简单的映射。              k         ----->  0
约瑟夫环问题--递归推导
本文为学习《剑指offer》的记录。因其原理在原作者博客上找不到,所以,只能自己编写记录,如有不当之处,欢迎指正。题目描述: n个数,编号为 0 , 1, ……, n-1 排成一个圆圈,从数字 0 开始,每次从这个圆圈中删除第 m 个数,请问最后一个剩下的数是多少?推导过程 定义一个函数 f(n, m) 为 n 个数中取 m 最后剩下的编号。 第一个被删除的数是 (m-1)%n, 记为 k 。
【c语言】使用数组解决 约瑟夫环问题
由于目前对c语言的学习仅限于数组,指针还不会用。mo'shuo
约瑟夫环问题(数组和list方法)
先介绍一下什么是约瑟夫环问题:就是N个人围成一圈,从开头(下标为0)报数,报到你设置的Number就要出局,几轮下来后剩下最后一个人输出这个人的序号! 这里只介绍两种比较浅显易懂自己编写的代码,另外还有链表和递归的方式可以自行百度。 ok,第一种我们用数组来写。 int main() { int total = 0; cout << "total:" << endl; cin >
约瑟夫环问题(结构体指针实现)
#include #include struct node{ int data; struct node *next; }; int main(){ int i,j,k,m,n; struct node *h,*p,*q; scanf("%d%d",&n,&m); h=new node;
最简化约瑟夫环问题的递归算法详细解析
这个问题可能每个学算法的同学都会遇见,我没那么聪明,第一次看见时做不出来,只发现一些规律,后面看到算法也挺久才看懂,这里是将别人的算法结果做一个解析,例子是暂时网上找的递归最简洁的例子: 下面就以这个例子做一个解析,这个解法的实际问题就是n个东西围成一个圈,从一开始叫到m号的东西出去,求最后剩下的编号。(算法面试极为常见,就想知道你递归学的怎么样,就少用模拟法什么的了) 我们肯定一眼是无法进行
约瑟夫环出圈问题三种求解方法
#coding=utf-8 # 递归直接求出 def fun_recursion(m,k): """ f[1]=0; f[i]=(f[i-1]+k)%i = (f[i-1] +m%i) % i = (f[i-1] + m) % i ; (i>1) :param m: 长度 :param k: 第k数出环 :return: """
用线性表来解决约瑟夫环问题(C语言)
#include<stdio.h> #include<stdlib.h> #define OK 1; #define ERROR 0; typedef int Status; typedef int Elemtype; typedef struct Cnode{ Elemtype data; struct Cnode *next; }CNode; CNode *joseph; Sta
约瑟夫环问题的数组实现
约瑟夫环问题的描述为,设有编号为1,2,……,n的n(n>0)个人围成一个圈,从第1个人开始报数,报到m时停止报数,报m的人出圈,再从他的下一个人起重新报数,报到m时停止报数,报m的出圈,……,如此下去,直到所有人全部出圈为止。当任意给定n和m后,设计算法求n个人出圈的次序。     解题思路: 网上给的较多的解法是循环链表和数学推导出公式的思想,但如果是一个刚接触C语言没多久的人,对循环链表
约瑟夫环(c语言程序完整版)
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。#include<stdio.h> #include<stdlib.h> #include<string.h>typedef struct Node {
约瑟夫环问题python解法
约瑟夫环问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到k的那个人被杀掉;他的下一个人又从1开始报数,数到k的那个人又被杀掉;依此规律重复下去,直到圆桌周围的人只剩最后一个。         思路是:当k是1的时候,存活的是最后一个人,当k>=2的时候,构造一个n个元素的循环链表,然后依次杀掉第k个人,留下的最后一个是可以存活的人。代码如下:
C# 解决约瑟夫环问题
大致题意:10个小孩,每个人都有一个序号(从0-9),他们依次围成一圈,然后从0序号的小孩开始报数,从0-3,数到3的人出局,一直循环,问剩下的人是谁,序号是多少???单纯的只使用数组解决,,,using System;namespace 约瑟夫环数组求解 { class Program { static void Main(string[] args)
约瑟夫环的问题,python3实现
#encoding=utf-8def josephus(n,m):    &quot;&quot;&quot;        环的问题,        共有n个人围成一圈,从1开始报数,数到m时退出,再从1开始,直到所有人退出    &quot;&quot;&quot;    people = list(range(1,n+1))    index = 0    #给n个人编号放到表people中,从下标为0的人开始    for i in range(n...
C语言,数组实现约瑟夫环问题(两种方法)
约瑟夫环问题:约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。   第一种方法:要求将每次出列的人的序号输出,并输出最后一个出列的人。 代码如下: //c语言用数组实现约瑟夫环 #include #incl
约瑟夫环的问题与应用(JAVA)
[编程题] 删数 有一个数组a[N]顺序存放0-N,要求没隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。 输入描述: 每组数据为一行一个整数n(小于等于1000),为数组成员
Joseph(约瑟夫环)问题分析
据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人
约瑟夫环问题(循环链表实现C)
近日复习循环链表的时候忽然想到了约瑟夫环和循环链表都有相似之处,即都为一个圆,固尝试用循环链表写一下约瑟夫环,没想到成功了。 首先先把问题描述下吧: 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人
简单约瑟夫环【队列实现】
问题描述: 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,
Java实现约瑟夫环问题
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 /** * @author 16026 * */ import java.util.ArrayList; import java.util.List;
使用单链表求解约瑟夫环问题 (利用java中的LinkedList)
约瑟夫环(Josephus)问题:古代某法官要判决n个犯人的死刑,他有一条荒唐的法律,将犯人站成一个圆圈,从第s个人开始数起,每数到第d个犯人,就拉出来处决,然后再数d个,数到的人再处决……直到剩下的最后一个可赦免。当n=5,s=1,d=2,时: 直接利用LinkedList求解约瑟夫环问题: public class Josephus { public Josephus(int numb
约瑟夫环问题递归解法的一点理解
约瑟夫环递归解法代码的一点理解。 约瑟夫生者死者游戏 约瑟夫游戏的大意:30个游客同乘一条船,因为严重超载, 加上风浪大作,危险万分。因此船长告诉乘客,只有将全船 一半的旅客投入海中,其余人才能幸免于难。无奈,大家只 得同意这种办法,并议定 30 个人围成一圈,由第一个人数起,依次报数,数到第9人,便把他投入
用java实现链表并解决约瑟夫环问题
package 栈和队列; /** * * 数到3的人出列 ,看最后能剩下谁 * @author wangmeng * */ class Node { public Object data; public Node next; public Object getData() { return data; } public void setData(Objec
约瑟夫环问题的公式推导
题目:有n个人围成一个圈,将他们编号1~n从第k个人开始报数,每次报到m的人退出,问:最后留下的那个人编号为多少。
两种方法实现约瑟夫环(链表,顺序表)
//两种方法解决约瑟夫问题:顺序存储结构,循环单链表, //测试数据:a,b,c,d,e,f,g,h,i,j,n=10;从第2个开始,数到5即:s=2,m=5 //结果f,a,g,c,j,i,b,e,h,d, #include #include #define maxsize 100 typedef char datatype; typedef struct node1//顺序表
约瑟夫环——公式法(递推公式)
约瑟夫问题约瑟夫问题是个有名的问题:N个人围成一圈,第一个从1开始报数,报M的将被杀掉,下一个人接着从1开始报。如此反复,最后剩下一个,求最后的胜利者。 例如只有三个个人,把他们叫做A、B、C围成一圈,从A开始报数,报2的人被杀掉。 A开始报数,他报1。侥幸逃过一劫。 然后轮到B报数,他报2。非常惨,他被杀了 C接着从1开始报数 然后轮到A报数,他报2。也被杀死了。 最终胜利者是C 解决方案普通解
立即提问