约瑟夫问题
来源:互联网 发布:大数据公司排名北京 编辑:程序博客网 时间:2024/06/05 22:59
package 约瑟夫问题;public class MainClass { public static void main(String[] args) { Cyclink cl = new Cyclink(); cl.setLen(1000000000); cl.createLink(); //cl.print(); int k=3; cl.play(1, 3); }}class Node{ int num; Node next; public Node(int num) { this.num = num; }}class Cyclink{ Node firstnode=null;//第一个节点 Node temp=null; int len=0;// 链表为0 public void setLen(int len){ this.len=len; } public Cyclink() { } public void createLink(){ for (int i=1;i<=len;i++){ if (i==1){ Node node=new Node(i); firstnode=node; temp=node; }else{ if(i==len){ //最后一个节点 Node node=new Node(i); temp.next=node; temp=node; temp.next=firstnode; }else{ Node node=new Node(i); temp.next=node; temp=node; } } } }public void print(){ Node temp=firstnode ; do{ System.out.println(temp.num); temp=temp.next; }while (temp!=firstnode);}public void play(int k,int m){ //从k开始数,数m次 Node temp=firstnode ; //找到K在哪里 for(int i=1;i<k;i++){ temp=temp.next; } while(len!=1){ //s数m次 for (int i=1;i<m;i++){ temp=temp.next; } //找到m之前的那个节点 Node temp2=temp; while(temp2.next!=temp){ temp2=temp2.next; } //删除 System.out.println(temp.num); temp2.next=(temp.next); temp=temp.next; len--; } //最后一个 System.out.println("最后"+temp.num);}}
1 0
- 约瑟夫问题、约瑟夫环
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- #58 Length of Last Word
- 安卓数据缓存的一些操作
- maven在不同环境下的打包配置问题
- 可变参数的使用 va_start和va_end
- 统治世界的十大算法
- 约瑟夫问题
- 第十二周阅读程序(1):多重继承
- syslog相关
- 【原创】Redis内核之数据结构实现
- 第12周 【项目4 - 点、圆的关系】(1)
- 5555555555555555555555555
- ubuntu linux入门
- 求集合的子集
- CocoaPods使用详细说明