首页 > 代码库 > 约瑟夫环 java实现
约瑟夫环 java实现
问题:
N个人从1到N编号,围城一圈,从1开始报数, 数到X时,将X的编号输出,并将那个人踢出,
下一个从1再开始报数,直到所有人都出去
思路:
就是计数,移除,没有太深的思想,直接上代码:
package test; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * N个人从1到N编号,围城一圈, * 从1开始报数, 数到X时,将X的编号输出,并将那个人踢出, * 下一个从1再开始报数,直到所有人都出去 * @author anjl * */ public class My_JosephCircle { public static void main(String[] args) { List alist = new ArrayList(); System.out.println("请输入约瑟夫环 中 总个数数:"); Scanner sca = new Scanner(System.in); int N = sca.nextInt(); // 提示输入要出圈的数值 System.out.println("请输入要出圈的数值:"); int X = sca.nextInt(); System.out.println("按出圈的次序输出序号:"); for(int i=0 ;i<N;i++){ alist.add(i+1); } int i=-1; int countX=0; while(alist.size()!=0){ ++i; if(i== alist.size()){ i=0; } ++countX; if(countX==X){//输出 System.out.print(alist.get(i)+ " "); alist.remove(i); countX=0; i--;//修正 } } } }
测试结果:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。