猴子选大王 java_猴子选大王(java求解) | 学步园

这是一个使用Java编写的程序,模拟n只猴子选大王的过程。猴子们按编号围成一圈,每报数到m的猴子退出,直到只剩一只猴子成为大王。程序接收n(猴子数量)和m(报数上限)作为参数,返回最后的大王猴子编号。通过示例运行,可以看到不同参数组合下的结果。
摘要由CSDN通过智能技术生成

n只猴子选大王,方法如下:按照1,2,3....n给猴子编号,然后按编号顺序坐成1圈,从1号猴子开始按编号顺序报数至m,报到m的猴子退出圈外,退出的猴子的下一只猴子重新从1开始报数至m,报到m的猴子退出,如此循环直至剩下一只猴子就是大王。要求编写一程序,n和m都是入参,返回最后一只猴子的编号。

代码

import java.util.*;

class Monkey

{

int index;

Monkey(int i)

{

index = i;

}

}

public class Monkeys

{

ArrayList monkeys = new ArrayList();

public Monkeys(int nMonkeys)

{

for (int index =1;index<=nMonkeys;index++)

{

monkeys.add(new Monkey(index));

}

}

public Monkey selectKing(int m)

{

int startIndex = 0;

while(monkeys.size() != 1)

{

int removeIndex = (startIndex + m-1) % monkeys.size();

monkeys.remove( removeIndex );

startIndex = removeIndex;

}

return monkeys.get(0);

}

public static void main(String[] args)

{

int[] params = {0,0};

if (!checkArgs(params, args)) return;

Monkeys monkeys = new Monkeys(params[0]);

System.out.println("The King of Monkeys is No."+

monkeys.selectKing(params[1]).index + "!");

}

private static boolean checkArgs(int[] result, String... args)

{

if (args.length < 2)

{

System.out.println("You must give me the number of

Monkeys and max value of count by argument.");

return false;

}

else if (args.length >2)

{

System.out.println("Two many arguments. Please pass only

two arguments");

return false;

}

int index = 0;

for (String s : args)

{

try

{

int x = 0;

try

{ x = Integer.parseInt(s);}

catch (NumberFormatException e)

{

NumberFormatException e1 =

new NumberFormatException(e.getMessage()

+ "/nInput argument must be decimal

digits");

throw e1;

}

if (x<=0)

{

NumberFormatException e =

new NumberFormatException("For input

string /""+s+"/"." + "/nArgument

must be > 0.");

throw e;

}

result[index++]=x;

}

catch (NumberFormatException e)

{

System.out.println("One argument is invalid.

Check it!");

System.out.println(e.getMessage());

return false;

}

}

return true;

}

}

运行结果

java Monkeys 10 5

The King of Monkeys is No.3!

java Monkeys 3 2

The King of Monkeys is No.3!

java Monkeys 8 4

The King of Monkeys is No.6!

java Monkeys 20 9

The King of Monkeys is No.6!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值