约瑟夫问题(Josephus)java链表解决
来源:互联网 发布:plsql 执行sql文件 编辑:程序博客网 时间:2024/06/11 02:42
/*设编号为1、2、、、、n的N个人围成一圈,约定编号为K(1<K<n)的人开始从1开始报数,数到M的那个人出列,她的下一位从1开始报数,数到M的那个人出列,以此类推,直到所有人出列算出最后一个出列的?*/
以下是源码:
package com.ym;//包自己引这是我的 public class demo3 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Cyclink Cyclink=new Cyclink(); Cyclink.Setlen(4); Cyclink.createLink(); Cyclink.setM(2); Cyclink.setk(2); Cyclink.show(); Cyclink.play(); } } //创建小人小孩只有编号 class Child{ int no; Child nextChild=null; public Child(int no){ //给一个编号 this.no=no; } } //首先创建环形链表 class Cyclink{ public static int setk; //先定义一个指向第一个孩子的引用 //指向第一个小还得引用不能用fristChild Child fristChild=null; //定义游标负责链接 Child temp=null; int len=0;//表示共有多少小孩初始化为0 int k=0; int m=0; public void setM(int m){ this.m=m; } //从第几个人开始数数 public void setk(int k){ this.k=k; } //设置环形链表的大小 public void Setlen(int len){ this.len=len; } //开始paly public void play(){ Child temp=this.fristChild; //开始找到数数的人 for(int i=1;i<k;i++){ temp=temp.nextChild; } while(this.len!=1){ //熟M下 for(int j=1;j<m;j++){ temp=temp.nextChild; } Child temp2=temp; //找到要出圈的小孩 while(temp2.nextChild!=temp){ temp2=temp2.nextChild; } //将数到M的小孩踢出去 temp2.nextChild=temp.nextChild; temp=temp.nextChild; this.len--; } System.out.print("最后剩下"+temp.no); } //初始化环形链表设定环形链表的大小 public void createLink(){ for(int i=1;i<=len;i++){ //创建第一个小孩 if(i==1){ Child ch=new Child(i); this.fristChild=ch; this.temp=ch; }else{ if(i==len){ Child ch=new Child(i); temp.nextChild=ch; temp=ch; temp.nextChild=this.fristChild; }else{ Child ch=new Child(i); temp.nextChild=ch; temp=ch; } } } } //下面是验证输出地是否有效 public void show(){ Child temp=this.fristChild; do{ System.out.print(temp.no); temp=temp.nextChild; }while(temp!=this.fristChild); } }
- 约瑟夫问题(Josephus)java链表解决
- 用链表解决约瑟夫(Josephus)问题
- 双向循环链表解决Josephus(约瑟夫)问题
- C语言通过双向循环链表解决Josephus(约瑟夫)问题
- 约瑟夫问题 java解法(双向链表解决)
- 不使用链表解决Josephus问题
- 循环链表解决Josephus环问题
- 双链表解决Josephus问题
- josephus链表解决
- 约瑟夫(Josephus)问题
- 约瑟夫(Josephus)问题
- 约瑟夫(Josephus)问题
- Java-约瑟夫问题(Josephus Problem)
- 约瑟夫问题(Josephus问题)的递推O(n)解法、循环解法、单循环链表解法
- 链表解决约瑟夫问题
- 循环链表解josephus问题
- 约瑟夫问题(Josephus)链表实现
- Java数组模拟链表解决约瑟夫问题
- some perl module introduction
- PHP 编写更高性能的PHP代码
- JavaScript最常用的55个经典技巧
- 使用行为树(Behavior Tree)实现游戏AI
- 点击webbrowser控件上此网页的某链接时,弹出一个新form窗体
- 约瑟夫问题(Josephus)java链表解决
- C/C++的内存机制
- java学习杂谈
- vector取地址做数组使用
- mtk中的数据类型
- PERL安装
- 转载——JAVA学习提高之----安装多个JDK版本的问题
- C/C++程序编译步骤详解
- linux 2.6.18-20 local exploit