N只猴子站成一行,每隔M只从头报数,反复进行,报过数的退出,打印每次退出的猴子的编号,直到剩下一只

来源:百度知道 编辑:UC知道 时间:2024/05/31 04:32:41

你的题目本身就有问题, 每隔M只报数, 怎么可能最后直剩一只, 又不是站一圈, 基本规则都没说清楚,下面的是当数量小于M个时就结束了

import java.util.ArrayList;
import java.util.List;

public class Monkey {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
int count = getN(args);
ArrayList list = (ArrayList) getList(count);
int M = 3;

while (list.size() > 1 && list.size()>=M ) {
for (int i = 0; i < list.size(); i++) {
if (i != 0 && i % M == 0) {
System.out.println(list.get(i) + "离队");
list.remove( i );
}
}
}

} catch (Exception e) {
System.out.println(e.getMessage());
}
}

private static List getList(int count) {
ArrayList list = new ArrayList();
for (int i = 0; i < count; i++) {
list.add(new Integer(i + 1).toString());
}