58,454
社区成员
发帖
与我相关
我的任务
分享
import java.util.*;public class MonkeyKing
{
private static final int N = 1000;
public static void main(String[] args) {
int a [] = new int[N+1]; // a[0]表示存活的第一只猴子的位置,位置从1-1000, 输出时-1对应0-999
for (int i=0; i<=N; i++)
a[i] = i+1; //a[i]表示编号为i-1的猴子紧邻的后一个猴子位置
int num = N;
while (num>1) //num表示存活猴子数
{
int startPos = 0;
while (a[startPos]<N)
{
a[startPos] = a[a[startPos]]; //跳过一只猴子
startPos = a[startPos]; //向下移动两个位置
}
num = num / 2; //猴子数减半
}
System.out.println(a[0]-1); // 输出结果
}
}
package hzxdw;
import java.util.ArrayList;
public class chooseKing {
public void run() {
ArrayList <Integer> arr = new ArrayList <Integer>(1000);
for (int i = 0; i < 1000; i++) {
arr.add(i);
}
int count = -1;
while (arr.size() > 1) {
for (int i = 0; i < arr.size(); i++) {
if (++count % 2 == 1) {
arr.set(i, -1);
}
}
for (int i = 0; i < arr.size(); i++) {
if (arr.get(i) == -1){
arr.remove(i);
}
}
}
System.out.println("最后剩下的猴子的编号为:" + arr.get(0));
}
}
package hzxdw;
public class Test {
public static void main(String[] args) {
chooseKing k=new chooseKing();
k.run();
}
}
System.out.println(511);
System.out.println( Arrays.toString( chooseKing( a ) ) );
public static int[] chooseKing( int a[] )
{
if ( a.length == 1 )
return a;
int[] b = new int[ a.length / 2 ];
int count = 0;
for ( int i = 0; i < a.length; i++ )
{
if ( i % 2 != 0 )
{
b[count] = a[i];
count++;
}
}
return chooseKing( b );
}
public void run() {
ArrayList <Integer> arr = new ArrayList <Integer>(1000);
// 初始编号1至1000
for (int i = 0; i < 1000; i++) {
arr.add(i);
}
int count = -1;// 计数值
while (arr.size() > 1) {//最后只剩下1只猴子
//编号为奇数时赋值为-1(做记号)
for (int i = 0; i < arr.size(); i++) {
if (++count % 2 == 1) {
arr.set(i, -1);
}
}
//将记号为-1的值从列表中删除
for (int i = 0; i < arr.size(); i++) {
if (arr.get(i) == -1){
arr.remove(i);
}
}
}
// 输出剩下结果
System.out.println("最后剩下的猴子的编号为:" + arr.get(0));
}
Vector v=new Vector();
for(int i=0;i<1000;i++){
v.add(new Integer(i));
}
while(v.size>1){
int index=0;
for(Iterator iter=v.iterator;iter.hasNext();){
if ((index % 2)==1){
iter.remove();
}
}
}
System.out.println(v.get(0));