有N个孩子围成一圈,从第一个孩子开始顺时针报数,报到3的孩子出列,下一个孩子有从一开始报数直到剩下最后一个孩子为止,试写一个程序,能让用户输入N,在输出最后剩下的孩子是第几号。例如5个孩子剩下的是4号。6个孩子剩下的是1号。请有java写。
解决方案 »
- java 正则
- 用JAVA打开一个IE窗口,打开时,怎么控制窗口的大小?高分求救!
- 怎样用JAVA实现将拼音转化为汉字
- [求助] editable jComboBox
- java Documentation 怎么看啊。。
- !!!java编出来的程序好像很占内存,怎么解决此问题???
- 有谁知道JAVA个版区斑竹的QQ号码????
- java applet中怎么显示tiff
- 关于接口(interface)简单问题,各位给看一下
- 在本地测试没问题,在服务器(Linux测试环境)测试出现问题
- Java: system.out.printf()?????????????? Need help.
- 初学者问一低级问题
求代码!java的。
package collections;import java.util.*;public class Children {
private int cnt; //小孩人数
private int number; //用于计数
public Children(int cnt){
this.cnt = cnt;
}
public void choice(){
ArrayList<Integer> children = new ArrayList<Integer>();
for(int i=1;i<=cnt;i++){ //初始化
children.add(i);
}
Iterator<Integer> it = children.iterator();
while(cnt>1){
if(it.hasNext()){
it.next(); //往后读
number++;
}else{
it = children.iterator(); //迭代器到达末尾后,重置到链表头部。模拟一个环。
}
if(number==3){ //报到的孩子出列
number = 0 ;
it.remove();
cnt--;
}
}
System.out.println(children.get(0)); //最后剩下一个
}
public static void main(String[] args) {
int N = 6 ;
new Children(N).choice();
}
}
http://topic.csdn.net/u/20110327/22/b7ca7bcc-11c9-45ff-b050-5b358d9b18d0.html
这个帖应该能帮到你吧!
public static int getLastone(int total, int step) {
int r = 0;
for (int i = 2; i <= total; i++)
r = (r + step) % i;
return r;
}
public static void main(String[] args){
boolean[] arr =new boolean[500];
for(int i = 0; i < arr.length; i ++){
arr[i] = true;
}
int leftCount = arr.length;
int countNum = 0;
int index = 0;
while(leftCount > 1){
if(arr[index] == true){
countNum ++;
if(countNum == 3){
countNum = 0;
arr[index] = false;
leftCount --;
}
}
index ++;
if(index == arr.length){
index = 0;
}
}
for(int i = 0; i<arr.length; i ++){
if(arr[i] == true){
System.out.print(i);
}
}
}}
你看看这个行不嘛 网上看见的
{
Vector a = new Vector();
for(int i=1; i<=n; i++)
{
a.add("第" + i + "个孩子");
}
for(;;)
{
if(a.size()==1) break;
for(int k=0; k<2; k++)
{
a.add(a.remove(0));
}
a.remove(0);
}
System.out.println(a);}
int GetLastNumber(int n, int m)
{
int *pArr = new int[n];
int i = 0;
for (i = 0; i < n; i++)
pArr[i] = i + 1;
int j = 0, k = -1;
for (i = 0; i < n;)
{
if (pArr[i] > 0)
{
j++;
if (j == m)
{
pArr[i] = 0;
j = 0;
}
if (k == i)
break;
k = i;
}
if (i == n - 1)
i = 0;
else
i++;
}
if (pArr != NULL)
{
delete []pArr;
pArr = NULL;
}
return i;
}