猴子大王的代码JAVA 猴子大王c语言

会的都来吧 , 猴子选大王java实现只用数组猴子大王的代码JAVA的话猴子大王的代码JAVA,要多用一个数组倒腾数据,算法如下 , 调试通过猴子大王的代码JAVA:
public class MonkeyKing
{
public static void main(String[] args)
{
final int m=5;
int[] monkey;
//这个数组用来安置第一轮报数过后过关的猴子
int[] mon=new int[m];
//猴子围成圈报数,每轮报数过后,报数的基准会发生变化,这个变量用来存放基准偏移量
int token=0;
//满足条件的猴王候选人数
int candidate=m;
monkey=new int[candidate];
//为最初参选的猴子编号
for(int i=0;icandidate;i)
{monkey[i]=i 1;}
//没有选出猴王之前,进行的操作
while(candidate1)
{
for(int i=0;icandidate;i)
{
//报数为3的猴子编号一律为0
if((i token)%3==2){monkey[i]=0;}
//报数结束一轮后,计算下一轮报数基准的偏移量
if(i==candidate-1)
{
//存放一轮结束后产生的基准编译
int k=0;
switch((candidate)%3)
{
case 0:k=0;break;
case 1:k=1;break;
case 2:k=2;break;
}
token=k;
}
}
//存放每轮被淘汰的猴子的数量
int count=0;
//过关猴子数组的初始索引
int m_index=0;
for(int i=0;icandidate;i)
{
if(monkey[i]!=0)
{
mon[m_index]=monkey[i];
m_index;
}
else
{
count;
}
}
//每轮过关的猴王候选
candidate -= count;
//重建猴王候选数组,进入下一轮报数
monkey= new int[candidate];
for(int i=0;icandidate;i)
{
monkey[i]=mon[i];
}
}
System.out.println("猴王的编号为:" monkey[0]);
}
}
求java代码是《约瑟夫环问题-猴子选大王》无界面猴子大王的代码JAVA!
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class LinkCircle {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int n, k, m, i, j, count, p, q;
int[] a = new int[100];
ListInteger array = new LinkedListInteger();
p = 0;
q = 0;
count = 0;
n = in.nextInt();
m = in.nextInt();
for (i = 0; in; i) {
array.add(i1);
System.out.printf(i != n - 1 ? "%d " : "%d\n", array.get(i));
}
int pos = -1;
int x = 0;
while(array.size() != 1)
{
//x = array.get(pos);
pos= m ;
if(pos = array.size())
{
pos = pos % array.size();
}
System.out.println("remove pos:"(pos1)", value:"array.get(pos));
array.remove(pos--);
System.out.print("Array : ");
for (i = 0; iarray.size(); i) {
System.out.printf(i != array.size() - 1 ? "%d " : "%d\n\n", array.get(i));
}
}
System.out.println("res:"array.get(0));
}
}
猴子选大王算法(快得急)我用java写猴子大王的代码JAVA了一个,也是给人帮忙啦,可以给兄台参考参考 , 有空的话,给猴子大王的代码JAVA你改个指针版出来
MonkeyNumber.java源程序如下:
package test;
import java.util.Scanner;
/**
* @author Administrator
*
* 有M只猴子围成一圈,每只各一个从1到M中的编号,
* 打算从中选出一个大王;经过协商,决定出选大王的规则:从第一个开始循环报数,
* 数到N的猴子出圈,最后剩下来的就是大王 。
* 要求:从键盘输入M、N , 编程输出猴子出列的次序并计算哪一个编号的猴子成为大王(用数组实现) 。
* 要求程序完整,并且验证过,
*
*/
public class MonkeyNumber {
/**
* 出圈
* b方法描述/b:第outNo号出圈 p
* b方法流程/b:
* p
* @param monkey
* @param n
* @return outNo 出圈的索引号
*/
private static int getOut(int[] monkey,int n){
int outNo = -1;
int intValidVoters = getVotersNumber(monkey);
for(int i=0; imonkey.length; i){
if(intValidVotersn){
if(monkey[i]==n%intValidVoters){
outNo = i 1;
monkey[i]=-1;// 去除该位置的值
System.out.print("--编号为[" outNo "]的猴子出圈!--");
return outNo;
}
}
else if(intValidVotersn){
if(monkey[i]==(n%intValidVoters==0?intValidVoters:n%intValidVoters)){
outNo = i 1;
monkey[i]=-1;// 去除该位置的值
System.out.print("--编号为[" outNo "]的猴子出圈!--");
return outNo;
}
}
else if(intValidVoters==n){
if(monkey[i]==n){
outNo = i 1;
monkey[i]=-1;// 去除该位置的值
System.out.print("--编号为[" outNo "]的猴子出圈!--");
return outNo;
}
}
}
return outNo;
}
/**
* 重新初始化数组
* b方法描述/b:对输入的数组重新进行赋初值 p
* b方法流程/b:
* p
* @param monkey
* @param startPos 从startPos位置开始赋初值,startPos索引的数组,其值置为1
*/
private static void reAssign(int[] monkey, int startPos){
int count = 0;
//数组中大于等于位置startPos的有效值的个数
int behindCount = getVotersNumber(monkey, startPos);
//对号码重新初始化
for(int i=0;imonkey.length; i){
int differenceValue = https://www.04ip.com/post/i-startPos 1;
if(monkey[i] != -1){
if(differenceValue0){
monkey[i]=behindCount;
}
else if(differenceValue = https://www.04ip.com/post/0){
monkey[i]=count;
}
}
}
}
/**
* b方法描述/b:取得当前有效选民数 p
* b方法流程/b:
* p
* @param monkey
* @return
*/
private static int getVotersNumber(int[] monkey){
int count = 0;
//计算目前多少个号码有效
for(int i=0;imonkey.length; i){
if(monkey[i] != -1){
count;
}
}
System.out.print("当前有[" count "]只猴子参加选举!");
return count;
}
/**
* b方法描述/b:取得大于等于位置startPos的有效选民数 p
* b方法流程/b:
* p
* @param monkey
* @return
*/
private static int getVotersNumber(int[] monkey,int startPos){
int count = 0;
//计算目前多少个号码有效
for(int i=startPos;imonkey.length; i){
if(monkey[i] != -1){
count;
}
}
return count;
}
/**
* b方法描述/b:主程序 p
* b方法流程/b:测试
* p
* @param args
*/
public static void main(String[] args){
System.out.println("Input:M N ");
Scanner scanner = new Scanner(System.in);
String strM = scanner.next();
String strN = scanner.next();
while (strM == null || !strM.matches("[0-9] ")){
System.out.println("输入错误 , 您输入的第一个参数不是数字 , 请再次输入:");
scanner = new Scanner(System.in);
strM = scanner.next();
}
while (strN == null || !strN.matches("[0-9] ")){
System.out.println("输入错误,您输入的第二个参数不是数字,请再次输入:");
scanner = new Scanner(System.in);
strN = scanner.next();
}
int m = Integer.parseInt(strM);
int n = Integer.parseInt(strN);
System.out.println("当前有::[" m "]只猴子" ",即将报的数是::[" n "]");
int monkey[] = new int[m];
//赋初值
for(int i=0; im; i){
monkey[i]=i 1;
}
for(int i=0; im-1; i){
//出圈
int outNum = getOut(monkey,n);
int startPos = -1;
if(outNum==m){
startPos = 0;
}
else{
startPos = outNum;
}
//再次循环赋初值
reAssign(monkey,startPos);
System.out.println();
}
for(int i=0; im; i){
if(monkey[i]!=-1){
System.out.println("Voting Success!!!编号为[" (i 1) "]的猴子成为大王!");
}
}
}
}
java解决猴子选大王问题import java.util.LinkedList;
import java.util.List;
public class Program {
/**
* @param args
*/
public static void main(String[] args) {
int N = 5;
ListMonkey monkeys = new LinkedListMonkey();
ListMonkey newMonkeys = new LinkedListMonkey();
//初始化猴子
for(int i = 0; i17; i){
monkeys.add(new Monkey(i));
}
newMonkeys.addAll(monkeys);
int index = 0;
while (true)
{
if (monkeys.get(index).numberOff() == N)//报数数到N
{
monkeys.remove(index);
Monkey.n = 1;
}
index;
if (index = monkeys.size())
index = 0;
if (monkeys.size() == 1)//猴子只剩一个
break;
}
//查找当王的猴子原来的位置
for(int i = 0; inewMonkeys.size(); i){
if(monkeys.get(0).getID() == newMonkeys.get(i).getID()){
System.out.println(i);
break;
}
}
}
}
class Monkey{
public static int n = 1;
private int id;
public Monkey(int id){
this.id = id;
}
public int getID(){
return id;
【猴子大王的代码JAVA 猴子大王c语言】 }
public int numberOff(){
int num = n;
n;
return num;
}
}
关于猴子大王的代码JAVA和猴子大王c语言的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读