博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
约瑟夫环问题
阅读量:6830 次
发布时间:2019-06-26

本文共 1783 字,大约阅读时间需要 5 分钟。

问题描述:假设有N个小孩按照序号1,2,,,N围坐成一圈,从第一个小孩开始报数,每次报到n的人退出,接着从下一个人重新开始从1开始报数,下一次再报到n的人退出,求最后一个留下的人;

数组实现:

public class huan {    /**     * @param args     */    public static void main(String[] args) {        String[] s = new String[]{
"0a","1b","2c","3d","4e","5f","6g","7h","8i","9j","10k","11l","12m","13n","14o","15p"}; int k = 3; while(s.length != 0){ int i = 1; while(i <= 2){ if(++k > s.length-1) {
//循环n次的时候,每次递增时进行下表越界判断 或者k=k%(s.length) k = 0; } if(s[k] != null) { i++; } } System.out.print(s[k] + ' '); s[k] = null; } }}

输出:5f 7h 9j 11l 13n 15p 1b 3d 6g 10k 14o 2c 8i 0a 12m 4e 

 

循环链表实现:

package com.iteye.ljmdbc7a;import java.util.Scanner;/** * 循环列表的Java实现,解决约瑟夫环问题 * @author LIU * */public class LinkedList{    //定义结点,必须是static    static class Node    {        int data;        Node next;        Node(int arg1)        {            this.data = arg1;        }    }    public static void main(String[] args)    {        int n = 0,m = 0;//定义总人数n,和出圈数字m        //输入n和m        System.out.println("输入总人数n,出圈数字m");        Scanner scanner = new Scanner(System.in);        n = scanner.nextInt();        m = scanner.nextInt();                //初始化循环列表,头结点first和尾结点p        Node first = new Node(1);        first.next = first;        Node p = first;        for(int i=2; i<=n; i++)        {            Node temp = new Node(i);            temp.next = p;            p.next = temp;            p = p.next;        }        p.next = first;//尾接头形成循环链表(p为尾结点)                //执行出圈操作        System.out.println("出圈顺序为:");        while(p != p.next)        {            //下面for循环后,p是第m个结点的前一个结点            for(int i=1; i

 

转载地址:http://pvjkl.baihongyu.com/

你可能感兴趣的文章
如何用 Ansible 部署 Kubernetes 集群到 OpenStack
查看>>
数学美 之 判断线段相交的最简方法
查看>>
ubuntu环境下markdown转换成pdf
查看>>
Friday Q&A 2015-11-06:为什么 Swift 中的 String API 如此难用?
查看>>
用命令方式操作mysql
查看>>
iOS设备标识符获取方法
查看>>
[Leetcode] Count and Say 数个数
查看>>
【redis学习二】多php版本下phpredis扩展安装
查看>>
【产品功能】弹性网卡支持私网多IP
查看>>
kvm 创建 基于glusterfs的存储池
查看>>
阿里云文件存储NAS开发测试环境最佳实践
查看>>
NASA公布“门户计划”,在月球轨道建立空间站进一步探索月球 ...
查看>>
jQuery 选择器 - 1
查看>>
什么是TensorBoard?
查看>>
HBase+Spark技术双周刊 第三期
查看>>
SIGIR阿里论文 | 一种端到端的模型:基于异构内容流的动态排序 ...
查看>>
一对一视频聊天app开发借助了哪些CDN的服务功能? ...
查看>>
Cloud Toolkit 1.1.0 支持 Command 清理
查看>>
【火热报名】1月19日阿里云栖开发者沙龙合肥专场:高并发企业级应用架构实践分享 ...
查看>>
特斯拉也裁员,马斯克长文诉苦:特斯拉太难了,真的没有办法!
查看>>