约瑟夫问题
来源:互联网 发布:java jdk for mac下载 编辑:程序博客网 时间:2024/06/10 19:10
//mainpublic class Test { public static void main(String[] args) { System.out.println("please input a num:"); int a = NumUtil.getInt(); List go = new ArrayList(); int b; do { System.out.println("please input a interval num:"); b = NumUtil.getInt(); if (b < a && b != 0) { break; } else { System.out.println("must be littler than last one!"); } } while (true); int[] old=new int[a]; for(int i=0;i<a;i++){ old[i]=i+1; } int c=a; int k=1; do { int num=0; int length=old.length; List teml=new ArrayList(); for(int j=0;j<length;j++){ if (k % b == 0) { int temp=old[j]; teml.add(temp); go.add(temp); num++; } k++; }; System.out.println(Arrays.toString(old)); old=NumUtil.remove(old,teml); c-=num; if(c==1){ break; } } while (true); System.out.println(go.toString()); }}
工具类
public class NumUtil { public static int getInt(){ Scanner scan=new Scanner(System.in); int a; try { a = scan.nextInt(); }catch(Exception e){ System.out.println("格式不正确!"); a=getInt(); scan.nextLine(); } return a; } public static int[] remove(int[] list, List temp){ int a=0; int[] na=new int[list.length-temp.size()]; for(int i=0;i<list.length;i++){ boolean flag=true; for(int k=0;k<temp.size();k++){ if(list[i]==(int)temp.get(k)){ flag=false; break; } } if(flag){ na[a]=list[i]; a++; } } return na; }}
//封装对象--------------------------------------------------------------------===================================-------------------------------------------------------------
public class ChildCyle { private Child firstChild; private Child temp; private int childNum; private int interval; public void setChildLink(){ for(int i=1;i<=childNum;i++){ if(i==1){ Child ch=new Child(1); this.firstChild=ch; this.temp=ch; }else if(i==childNum){ Child ch=new Child(i); temp.setNextChild(ch); ch.setNextChild(this.firstChild); }else{ Child ch=new Child(i); temp.setNextChild(ch); this.temp=ch; } } } public void play(){ List go=new ArrayList(); temp=this.firstChild; do{ for(int i=1;i<this.interval-1;i++){ temp=temp.getNextChild(); } go.add(temp.getNextChild().getNo()); temp.setNextChild(temp.getNextChild().getNextChild()); temp=temp.getNextChild(); }while(temp!=temp.getNextChild()); System.out.println(go.toString()); } public void show(){ temp=this.firstChild; do{ System.out.println(temp.getNo()); temp=temp.getNextChild(); }while(temp!=firstChild); } public void setFirstChild(Child firstChild) { this.firstChild = firstChild; } public void setTemp(Child temp) { this.temp = temp; } public void setChildNum(int childNum) { this.childNum = childNum; } public void setInterval(int interval) { this.interval = interval; }}class Child{ private int no; private Child nextChild; public Child(int no){ this.no=no; } public void setNo(int no) { this.no = no; } public int getNo(){ return this.no; } public Child getNextChild(){ return this.nextChild; } public void setNextChild(Child nextChild) { this.nextChild = nextChild; }}class Test{ public static void main(String[] args) { ChildCyle cc=new ChildCyle(); cc.setChildNum(7); cc.setInterval(2); cc.setChildLink(); // cc.show(); cc.play(); }}
0 0
- 约瑟夫问题、约瑟夫环
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- mysql
- SICP 1.45 n次方根
- unity 一个mesh renderer上有两个材质球更换材质球的方法
- 代码结构中Dao,Service,Controller,Util,Model是什么意思
- C语言支不支持重载?
- 约瑟夫问题
- 深入理解Handler
- nexus的仓库介绍,以及配置远程仓库
- bfc与margin折叠问题
- i.mx6核心板 4路/8路模拟CVBS摄像头TW6865/TW6869 i.MX6核心板四核工业级Android、Linux主板
- apache服务器:无法启动此程序,因为计算机中丢失VCRUNTIME140.dll 尝试重新安装此程序以解决此问题
- Eclipse通过jdbc连接数据库制作简单登陆界面
- java_web 学习记录(一):简单web项目
- ArrayList,LinkedList的对比