java数据结构26:约瑟夫问题

简介: 有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。

26:约瑟夫问题


总时间限制:

1000ms

内存限制:

65536kB

描述

有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。

输入

输入包含两个整数,第一个是n,第二个是m (0 < m,n <=300)。

输出

输出包含一行,即最后猴王的编号。

样例输入

12 4

样例输出

1

实现代码如下:

import java.util.LinkedList;
import java.util.Scanner;
/**
 * @author baikunlong
 * @date 2020/6/23 10:33
 */
public class Main  {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int p = scanner.nextInt();
        LinkedList<Integer> list = new LinkedList<>();
        for (int i = 0; i < n; i++) {
            list.add(i + 1);
        }
        int cNum = 1;
        int delIndex = 0;
        while (list.size() != 1) {
            if (cNum == p) {
//                System.out.print(list.get(delIndex) + " ");
                list.remove(delIndex);
                cNum = 1;
                if (delIndex>0) {
                    delIndex--;
                } else {
                    delIndex = list.size()-1;
                }
            } else {
                cNum++;
            }
            if (delIndex < list.size() - 1) {
                delIndex++;
            } else {
                delIndex = 0;
            }
        }
        System.out.print(list.get(0) + "");
    }
}


目录
相关文章
|
30天前
|
Java
【Java集合类面试二十六】、介绍一下ArrayList的数据结构?
ArrayList是基于可动态扩展的数组实现的,支持快速随机访问,但在插入和删除操作时可能需要数组复制而性能较差。
|
1月前
|
存储 设计模式 算法
JAVA中的常见数据结构
JAVA中的常见数据结构
|
1月前
|
存储 Java
数据结构中的哈希表(java实现)利用哈希表实现学生信息的存储
这篇文章通过Java代码示例展示了如何实现哈希表,包括定义结点类、链表类、数组存储多条链表,并使用简单的散列函数处理冲突,以及如何利用哈希表存储和查询学生信息。
数据结构中的哈希表(java实现)利用哈希表实现学生信息的存储
|
30天前
|
存储 算法 Java
"解锁Java对象数据结构的奥秘:从基础到实战,与热点技术共舞,让你的编程之路更激情四溢!"
【8月更文挑战第21天】Java以对象为核心,它是程序的基本单元与数据处理的基础。对象源自类,拥有属性(字段)和方法。对象在内存中分为对象头(含哈希码、GC信息等)和实例数据区(存储属性值)。例如,`Student`类定义了姓名、年龄等属性及相应的方法。通过`new`关键字实例化对象并调用其方法进行数据操作,是Java编程的关键技能。
26 0
|
2月前
|
缓存 算法 安全
Java中的数据结构与算法优化策略
Java中的数据结构与算法优化策略
|
2月前
|
存储 算法 搜索推荐
使用Java实现高效的数据结构与算法
使用Java实现高效的数据结构与算法
|
2月前
|
存储 算法 搜索推荐
Java中的数据结构与算法实现
Java中的数据结构与算法实现
|
2月前
|
算法 搜索推荐 Java
在Java中实现高效的算法与数据结构
在Java中实现高效的算法与数据结构
|
2月前
|
存储 Java 索引
Java中的常见数据结构及其实现
Java中的常见数据结构及其实现
|
2月前
|
存储 Java 索引
Java数据结构:选择合适的数据结构解决问题
Java数据结构:选择合适的数据结构解决问题