日期:2014-05-20 浏览次数:20807 次
import java.util.*; public class Room { public static void main(String args[]) { ArrayList list = new ArrayList(); for(int i=1;i<10;i++) { list.add(i+""); } int j=1;int k=0; while(list.size()>1) { if(k>=list.size()) { k=0; } if(j==5) { System.out.print(list.get(k)+"-"); list.remove(k); j=0; k--; } j++; k++; } System.out.println(list.get(0)); } }
------解决方案--------------------
3楼为什么不用generic以及用list声明
------解决方案--------------------
没明白意思!
------解决方案--------------------
约瑟夫环问题,以前有一个帖子,问题是:
100人围成一个圈,随机挑出一个开始报数1,他的下一位(顺、逆时针无所谓)接着报下一个数字,报到7的人出圈子,圈子缩小,而刚出去人的下一位又从1开始报数,如此循环,求最后剩下的那个人。
扩展:人数由用户输入,求幸存者。
写过类实现了,后面的朋友用字符串截取也实现了,效率更高。不过貌似这个帖子找不到了。
------解决方案--------------------
请问这是不是约瑟夫环的问题阿,我以前用c++写过的,用循环链表怎么样,情楼上的朋友指点下我的思路
------解决方案--------------------
四楼才是正道
------解决方案--------------------
mark
------解决方案--------------------
package src;
import java.util.*;
public class MathTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
Vector<Integer> array = new Vector<Integer>();
int i = 0,flag =1,index = 0;
for(i=1;i<=9;i++){
array.add(new Integer(i));
}
System.out.println(array.size());
Enumeration e = array.elements();
while(e.hasMoreElements()){
System.out.println(e.nextElement());
}
while(true){
if(array.size()==1){
break;
}
else{
if(array.size()>1 && flag%5 == 0){
System.out.println("数据"+array.elementAt(index)+"被删除");
array.remove(index);
index--;
}
flag++;
index = (index+1)%array.size();
}
}
System.out.println("结果为:"+array.firstElement());
}
}
------解决方案--------------------
顶一下!多看贴子总是有用的、
------解决方案--------------------
学习一下 顶
------解决方案--------------------
3楼的我想得到最后一个数怎么写啊,
if(j==5)
{
System.out.print(list.get(k)+"-");