关于一个思考题的疑惑:500个人围成一圈.... csdn 里面有这个问题的 参考 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 前段时间的:http://bbs.csdn.net/topics/390793174 public class Arithmetic { private List<String> list = new ArrayList<String>(); public void arithmetic(int index, int size) { List<String> person = new ArrayList<String>(); List<String> delete = new ArrayList<String>(); int suffix = 1 + index; for (int i = 0; i < size; i++) { if (suffix > 3) { suffix = 1; } String element = null; if (list.get(i).indexOf("_") != -1) { element = list.get(i).split("_")[1]; } else { element = list.get(i); } person.add(Integer.valueOf(suffix).toString() + "_" + element); if (suffix %3 == 0){ delete.add(person.get(i)); } suffix ++; } System.out.println(person); index = Integer.parseInt(person.get(person.size() - 1).split("_")[0]); person.removeAll(delete); System.out.println(person); System.out.println("------------------------------"); if (person.size() > 1) { list = person; arithmetic(index, person.size()); } else { } } public void init (int size) { for (int i = 1; i <= size; i++) { list.add("人" + i + "人"); } System.out.println(list); this.arithmetic(0, size); } public static void main(String [] args) { // 设置初始人数 new Arithmetic().init(500); }} 我的做法是把每个位置的字符和位置存到一个 person类中,最后剩一个时候,打印出它的位置public class loop { public static void main(String[] args) { String a="1357"; //输入的字符串 fun(a,3); } public static void fun(String s,int n){ person p[];; ArrayList<person> list=new ArrayList<person>(); for(int i=0;i<s.length();i++) list.add(new person(s.charAt(i),i)); int count=n; int temp=0; for(int i=0;i<s.length()-1;i++) { temp=(n-1)%list.size(); //每次都求出要出列的位置 System.out.print(list.get(temp).s); //打印值 list.remove(temp); //出列 n=count+temp; //本次出列的位置加上count 记录当前指针走到哪里 } System.out.print("最后一个位置:"+list.get(0).num); }}class person{ //记录每个字母的值和数字,如果只要求位置的话,直接可以用int 类型替代 public int num; public char s; public person(char c,int num){ this.s=c; this.num=num; }} 这就是约瑟夫问题吧。用环形链表可以解决:可以参考下:http://www.cnblogs.com/myCodingSky/p/3803767.html 设计一个类获取数据库中数据表的数据项 Java 笔试题目(文件读写流) 教下我怎么运行java吧! JOptionPane问题: 请高手找错! 请帮忙看一下下面的代码 强烈要求高手帮帮我这个菜鸟 jBuilder5的一个问题 帮我看看我这个程序那里错了?为什么编译后什么都显示不出来!!! 怎样在applet里面嵌入frame? 新人求助,JAVA做项目的思路 关于Clone的问题,小白求解答
private List<String> list = new ArrayList<String>(); public void arithmetic(int index, int size) {
List<String> person = new ArrayList<String>();
List<String> delete = new ArrayList<String>();
int suffix = 1 + index;
for (int i = 0; i < size; i++) {
if (suffix > 3) {
suffix = 1;
}
String element = null;
if (list.get(i).indexOf("_") != -1) {
element = list.get(i).split("_")[1];
} else {
element = list.get(i);
}
person.add(Integer.valueOf(suffix).toString() + "_" + element);
if (suffix %3 == 0){
delete.add(person.get(i));
}
suffix ++;
}
System.out.println(person);
index = Integer.parseInt(person.get(person.size() - 1).split("_")[0]);
person.removeAll(delete);
System.out.println(person);
System.out.println("------------------------------");
if (person.size() > 1) {
list = person;
arithmetic(index, person.size());
} else { }
} public void init (int size) {
for (int i = 1; i <= size; i++) {
list.add("人" + i + "人");
}
System.out.println(list);
this.arithmetic(0, size);
} public static void main(String [] args) {
// 设置初始人数
new Arithmetic().init(500);
}
}
String a="1357"; //输入的字符串
fun(a,3);
}
public static void fun(String s,int n){
person p[];;
ArrayList<person> list=new ArrayList<person>();
for(int i=0;i<s.length();i++)
list.add(new person(s.charAt(i),i));
int count=n;
int temp=0;
for(int i=0;i<s.length()-1;i++)
{
temp=(n-1)%list.size(); //每次都求出要出列的位置
System.out.print(list.get(temp).s); //打印值
list.remove(temp); //出列
n=count+temp; //本次出列的位置加上count 记录当前指针走到哪里
}
System.out.print("最后一个位置:"+list.get(0).num);
}
}
class person{ //记录每个字母的值和数字,如果只要求位置的话,直接可以用int 类型替代
public int num;
public char s;
public person(char c,int num){
this.s=c;
this.num=num;
}
}
可以参考下:
http://www.cnblogs.com/myCodingSky/p/3803767.html