问题:n = 7人坐在一圈,从1开始报数,报到m = 20的人出列,将他的密码作为新的m,直到所有的人出列。密码依次为:3、1、7、2、4、8、4。
使用JAVA数组实现:
public static void main(String[] args) { int m = 20; Character[] people = {'A','B','C','D','E','F','G'}; int length = people.length; int num = length; Integer[] password = {3,1,7,2,4,8,4}; int index = 0; int position = 1; while (num > 0) { if (m == position) { num --; System.out.print(people[index]); System.out.print('\t'); people[index] = null; position = 0; m = password[index]; } index = (++index % length); if (people[index] != null) { position ++; } } }
使用LinkedList实现:
public static void main(String[] args) { char[] p = {'A','B','C','D','E','F','G'}; int[] w = {3,1,7,2,4,8,4}; List<Character> people = new LinkedList<Character>(); List<Integer> password = new LinkedList<Integer>(); for (int i = 0; i < w.length; i++) { people.add(p[i]); password.add(w[i]); } int index = 0 ; int position = 1; int num = people.size(); int m = 20; while (num > 0) { if (position == m) { System.out.print(people.remove(index)); System.out.print('\t'); m = password.remove(index); num --; position = 1; if (index >= people.size()) { index = 0; } } else { if (num > 0) { if (index >= people.size() -1) { index = 0; } else { index ++; } position ++; } } } }
上面是我的实现方法。一定还有更好的解决方法。欢迎大家指点。
相关推荐
通过java顺序表实现约瑟夫环的两种方式: 1.通过数组移动 2.通过记录出对列的人员下标,下次查数时跳过
约瑟夫环问题描述:编号为1,2,…,n的n个人按顺时针方向围成一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始报数,报到m时停止报数,报m的人出列,将...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
此资源属于算法分析课程的实验(本程序的两种实现方法都使用了相同的界面来输出,所以单看界面是看不出其中的不同之处的,不同之处体现在dao包里面的源文件里)只供学习使用。本人很少上CSDN,有兴趣,有需要的话...
Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...
Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...
//此处用 continue也可以,只是效率低一点 System.out.print(" "+k+"X"+j+"="+j*k); } System.out.println(); } } } 6、输出所有的水仙花数,把谓水仙花数是指一个数3位数,其各各位数字立方和等于其本身,...
leetcode 分类力码 一些值得回顾的问题分类 算法 字符串算法 字符串搜索:028(通过基本搜索;考虑 KMP) 635 弦有可比性!...数组求和问题 ...的两个排序数组的中位数 ...原来的约瑟夫问题:消除一个,跳过一个,圈起来。 记
1/23/2013-(进入实验阶段)-已实现六边形圆柱逻辑,但仍处于Hibernate状态-TODO:另一种构造三角形数组的方法-TODO:让应用使用这些新坐标-((((不确定是否六边形将作为六边形出现)))) iOS 1/22/2013--大幅...