精华内容
下载资源
问答
  • Java猴子选大王

    千次阅读 2018-09-29 18:10:26
    Java猴子选大王 最近学Java,看到一个猴子选大王的问题,说有N只猴子围成一圈,猴子们定义一个数,从第一只猴子开始数,数到这个数的被淘汰掉,再依次进行,剩下的最后一只猴子就是大王。 这个问题需要定义一个数组...

    Java猴子选大王

    最近学Java,看到一个猴子选大王的问题,说有N只猴子围成一圈,猴子们定义一个数,从第一只猴子开始数,数到这个数的被淘汰掉,再依次进行,剩下的最后一只猴子就是大王。
    这个问题需要定义一个数组来存放这些猴子,然后需要用到判断循环等条件来淘汰猴子。

    package cn.com.www;
    import java.util.*;
    public class TMonkey {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
            System.out.println("输入猴子数:");                 
            int N =new Scanner(System.in).nextInt();          //输入选大王的猴子的数目
            int[] str=new int [N];
            int test=0;//标记新起点
            int num=N;//每轮的剩下猴子数             
            int last=0;
            for(int i=0;i<str.length;i++)//给猴子赋值数
            {
            	str[i]=1;
            }
            while(num!=1)           //当不为1的时候,跳出循环
            {
            	if(str[test]==1)        //让猴子的名字为1的进入选大王的队伍
            	{
            		last++;//相当于是个计数器,到那个数的猴子被淘汰掉
            		if(last==3)//我这里定义的是第三只猴子被淘汰掉
            		{
            			last=0;
            			str[test]=-1;     //将到那个数的猴子名字取负值,当然也可以取别的值,只要后边能判断就行
            			num--;
            		}
            	}
            	test++;
            	if(test==str.length)//如果test与猴子的数目相同,需要重头来算
            	{
            		test=0;
            	}
            }
           for(int k=0;k<str.length;k++)
           {
        	   if(str[k]>0)//最后剩下的猴子大王是正值
        	   {
        		   k=k+1;
        		   System.out.println("第"+k+"是猴子王");  //输出这一只猴子的位置
        	   }
           }
                 
    	}
    
    }
    
    
    展开全文
  • Java 猴子选大王

    2021-07-20 21:58:08
    猴子选大王 最普通方法:标志位方法 public class MonkeyDemo { public static void main(String[] args){ //0代表猴子存在,1代表猴子淘汰 int[] monkey =new int[15]; //记录猴子剩余数量 int count=15; int...

    猴子选大王

    最普通方法:标志位方法

    public class MonkeyDemo {
        public static void main(String[] args){
            //0代表猴子存在,1代表猴子淘汰
            int[] monkey =new int[15];
            //记录猴子剩余数量
            int count=15;
            int n = 0;//数组下标
            int num = 1;//计数:猴子遇到7的倍数淘汰
    
            //剩余1只猴子时,退出循环
            while(count>1){
                //先进行判断,看猴子是否已被淘汰,已淘汰的猴子跳过
                if(monkey[n]==0){
                    //判断是否淘汰猴子,淘汰变为1
                    if(num%7==0){
                        monkey[n]=1;
                        count--;
                    }
                    num++;
                }
                n++;
                //下标i等于15时,重新循环数组
                if(n==15){
                    n = 0;
                }
            }
            //通过遍历,找出最后剩下的猴子
            for(int i=0;i<15;i++){
                if(monkey[i]==0){
                    System.out.print("第"+(i+1)+"只猴子为猴王。");
                }
            }
        }
    
    
    展开全文
  • JAVA猴子选大王问题

    2019-09-24 22:23:04
    猴子选大王。输入猴子的个数n,所有的猴子从1-n编号排成一圈,从1号猴子开始数数,数到3的倍数猴子被淘汰,最后剩下的是大王。输出是大王猴子的编号(提示:使用数组,每个数组元素相当于一个猴子猴子的编号就是...

    题目要求
    猴子选大王。输入猴子的个数n,所有的猴子从1-n编号排成一圈,从1号猴子开始数数,数到3的倍数猴子被淘汰,最后剩下的是大王。输出是大王的猴子的编号(提示:使用数组,每个数组元素相当于一个猴子,猴子的编号就是数组元素下标加一。)
    思路
    输入猴子的总数为a,新建数组x[a],利用for循环给数组中的元素赋初值为1,定义留下来的猴子数为left=a,while循环的条件为left>1,if(x[index]==1)说明该猴子未被淘汰,继续报数,用num来计数,当num%3 ==0的时候,说明该猴子要被淘汰,num=0;x[index]=0,left–;
    当跳出while循环时,遍历数组,看哪只猴子的值为1,就输出。
    实验代码

    package shiyan4;
    import java.util.Scanner;
    public class shiyan4 {
    	public static void main(String[] args) {
    	System.out.println("请输入猴子的总数");
    	Scanner out=new Scanner (System.in);
    
    	int a=out.nextInt();//输入猴子的数量
    		out.close();
    	int [] x=new int [a];
    	for(int i=0;i<x.length;i++) {
    		x[i]=1;
    	}
    	int left=a;
    	int num=0;//报数
    	int index=0;//数组下标
    	while(left>1) {
    		if(x[index]==1) {
    			num++;//该猴子未被淘汰,继续报数
    			if(num%3==0) {
    				num=0;
    				x[index]=0;
    				left--;
    			}
    		}
    		index++;
    		if(index==a) {
    			index=0;//保证首尾位相连
    		}
    	}
    	for(int j=0;j<x.length;j++) {
    		if(x[j]==1) {
    			System.out.println("猴王的编号为: "+(j+1));
    		}
    	}
    }
    }
    
    
    

    有问题可以私信或者评论,

    java的学习还是要多注重上机操作和思考
    要继续坚持呀,
    fighting

    展开全文
  • /**Copyright (c) 2015 , 烟台大学计算机学院*All right resvered .*文件名称: 猴子选大王.cpp*作 者: 郑兆涵*线性表——猴子选大王*/问题:一群猴子,编号是1,2,3 …m,这群猴子(m个)按照1-m的顺序围坐一圈。...

    /*

    *Copyright (c) 2015 , 烟台大学计算机学院

    *All right resvered .

    *文件名称: 猴子选大王.cpp

    *作 者: 郑兆涵

    *线性表——猴子选大王

    */

    问题:

    一群猴子,编号是1,2,3 …m,这群猴子(m个)按照1-m的顺序围坐一圈。从第1只开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。输入m和n,输出为大王的猴子是几号。

    (1)链表解法:可以用一个循环单链表来表示这一群猴子。表示结点的结构体中有两个成员:一个保存猴子的编号,一个为指向下一个人的指针,编号为m的结点再指向编号为1的结点,以此构成环形的链。当数到第n个时,该结点被删除,继续数,直到只有一个结点。

    (2)使用结构数组来表示循环链:结构体中设一个成员表示对应的猴子是否已经被淘汰。从第一个人未被淘汰的数起,每数到n时,将结构中的标记改为0,表示这只猴子已被淘汰。当数到数组中第m个元素后,重新从第一个数起,这样循环计数直到有m-1被淘汰。

    (3)该问题为计算机科学中的经典问题,很多实际的问题可以抽象到这种模型上来。感兴趣的同学请搜索“约瑟夫问题”。

    编程代码:

    #include

    using namespace std;

    struct Monkey

    {

    int num; //猴子的编号

    struct Monkey *next; //下一只猴子

    };

    int main()

    {

    int m,n,i,j,king;

    Monkey *head, *p1,*p2;

    cin>>m>>n;

    if(n==1)

    {

    king=m;

    }

    else

    {

    //建立猴子围成的圆圈

    p1=p2=new Monkey;

    head = p1;

    p1->num=1;

    for(i=1; i

    {

    p1=new Monkey; //p1是新增加的

    p1->num=i+1;

    p2->next=p1;

    p2=p1; //p2总是上一只

    }

    p2->next=head; //最后一只再指向第一只,成了一个圆圈

    //下面要开始数了

    p1=head;

    for(i=1; i

    {

    //从p1开始,数n-1只就找到第n只了

    for(j=1; j

    p1=p1->next; //围成圈的,可能再开始从第一只数,如果还未被淘汰的话

    //找到了,

    p2=p1->next; //p2将被删除

    //cout<num<

    p1->next=p2->next; //p2就这样被“架空了”

    p1=p2->next; //下一轮数数的新起点

    delete p2; //将不在链表中的结点放弃掉

    }

    king=p1->num;

    delete p1;

    }

    cout<

    return 0;

    }

    输出结果:

    0818b9ca8b590ca3270a3433284dd417.png

    展开全文
  • 猴子选大王java

    2020-06-20 17:07:34
    问题描述 n只猴子要大王,选举方法如下:所有猴子按1, 2, ......输出数据:猴子的出队序列和猴子大王的编号。 实现代码 import java.util.*; public class MonkeySelectKing { private List<..
  • Java代码:猴子选大王

    2021-01-04 19:19:05
    猴子选大王 猴子选大王。输入猴子的个数n,所有的猴子从1-n编号排成一圈,从1号猴子开始数数,数到3的倍数猴子被淘汰,最后剩下的是大王。输出是大王猴子的编号(提示:使用数组,每个数组元素相当于一个猴子,...
  • 猴子选大王Java

    千次阅读 2020-10-25 11:09:50
    猴子选大王Java) 题目要求:完成猴子选大王的游戏,要求输入猴群的数量,以及报数的数值,按照排列顺序报道指定数值的猴子出局,最后剩下的即是大王,输出大王的编号。 import java.util.Scanner; public class ...
  • package java课程;...public class 猴子选大王 { public static void main(String args[]) { Scanner num=new Scanner(System.in); System.out.println("请输入猴子个数"); int n=num.nextInt(); int m...
  • 求水仙花数量指定位数 例如输入3范围则在100-999 5的号则是10000-99999 猴子选择选大王
  • 猴子选大王 Java

    千次阅读 2019-02-17 12:05:50
    7-28 猴子选大王 (20 分) 一群猴子新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始...
  • java算法:猴子选大王

    2019-09-04 21:28:40
    15个猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,直到最后一只猴子成为大王。问:哪只猴子会成为大王? public static void main(String[] args) { //定义布尔类型的数组表示15只猴子 boolean[] b=...
  • java 猴子大王

    2020-07-05 20:31:41
    思路: num为数组长度;维持一个同长度的数组,用来记录对应下标元素是否为... * 猴子选大王 */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt();
  • 猴子选大王java ArrayList实现

    千次阅读 2018-01-27 09:30:00
    十五个猴子围成一圈选大王,依次1-7 循环报数,报到7 的猴子被淘汰,直到最后一只猴子成为大王。问,哪只猴子最后能成为大王? 老师留的作业,ArrayList写的....,报到7的猴子remove掉,但要注意如果是末尾的猴子被...
  • 猴子选大王

    2014-05-27 19:46:20
    猴子选大王 一. 问题描述: 一堆猴子都有编号,编号是1,2,3 ...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该...
  • 基于java数据结构链表写的猴子选大王,其实就是一个约瑟夫环问题,采用java数据结构链表写的。有点小问题。当输入一只猴子,报数为1时删除会出错。没有实现动态显示猴子的添加和删除。
  • java经典案例“猴子选大王

    千次阅读 2019-07-06 22:43:22
    对于初学Java的小白可能遇到过猴子选大王这个问题。 这个问题是这样的:15只猴子围成一圈选大王,依次1-7循环报数,报到7的 猴子被淘汰,直到最后一只猴子成为大王,问我们哪只猴子会成为大王。 我们看到这个题首先...
  • java_linkedList 猴子选大王

    千次阅读 2015-05-24 11:15:05
    经过协商,决定出选大王的规则:从 第一个开始循环报数,数到N的猴子出圈,最后剩下来的就是大王。要求:从键盘输入M、N,编程计算哪一个编 号的猴子成为大王。。。。  使用的是LinkedList,原因是
  • /*初学者,bug可能比较多*/public class HouZi { /* 运用数组解决猴子选大王问题: */ public static void main(String[] args) { Scanner sz = new Scanner(System.in); System.out.print("请输入猴子总数:...
  • 猴子选大王 java中 linkedlist实现

    千次阅读 2015-09-17 11:18:55
    然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局,再从刚出局猴子的下一个位置重新开始报数,如此重复,直至剩下一个猴子,它就是大王。设计并编写程序,实现如下功能: (1) 要求由用户输入开始时的...
  • /** * m只猴子围成一圈报数,报n的猴子离开,再从1...public class P00_猴子选大王 { public static void main(String[] args) { final int m=15,n=3; int[] mk=new int[m]; /* 猴子指针 i //指出猴子编号,从...
  • Java训练题 猴子选大王(数组,循环) 15只猴子依次报数,到7淘汰 int a[]=new int[15]; for (int i = 0; i < a.length; i++) { a[i]=i+1; System.out.print(a[i]+" "); } int b=0;//报数 int c=0;//几轮 ...
  • 猴子选大王java普通数组实现)

    千次阅读 多人点赞 2017-01-15 22:29:16
    使用普通数组实现猴子选大王的小程序

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 513
精华内容 205
关键字:

java猴子选大王

java 订阅