本文主要是介绍找猴王:15只猴子围成一圈从1报数到7的出局,最后谁是猴王。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第一种:
package 找猴王;public class Test {public static void main(String[] args) {int n=15;//15只猴子int m=7;//数到7的就出局int count=1;//count为计报数的值,从1开始,7结束int size=n;//size的值从15变到1,到1时就找到了猴王(每数到7的就出局所以会最终剩余1)int[] a = new int[n];//定义一个数组存放15个猴子的编号(1--15的编号)for(int i=0;i<n;++i){a[i]=i+1;//第一只猴子编号1,第二只猴子编号2...第15只猴子编号15//System.out.println(a[i]+",");打印出1--15个数}int current=0;while(size!=1)//此while循环判断剩余猴子数,当剩余1只时结束,找到猴王{while(count<m)//从1开始报数直到报到7时结束此while循环{if(a[current]!=0){count++;current=(current+1)%n;//循环成一个圈while(a[current]==0){current=(current+1)%n;}}else{current=(current+1)%n;while(a[current]==0){current=(current+1)%n;}}}a[current]=0;while(a[current]==0){current=(current+1)%n;}size--;//上面找到了数7的就使猴子数size减一count=1;//count计数重新从1开始计数}//System.out.println();//换行for(int i=0;i<n;++i)//此for循环找出a[i]不等于0的猴子就是大王,因为a[i]是0表示淘汰了的{if(a[i]!=0){System.out.println("第"+(i+1)+"个是猴王!");}}}}
第二种:
package 找猴王;public class Test2 {public static int getQue(int n,int m){ int r = 0; for(int i=2;i<=n;i++) r = (r+m)%i; return r+1; } public static void main(String[] args) {int key = Test2.getQue(15,7);System.out.println("猴王是:"+key);}}
这篇关于找猴王:15只猴子围成一圈从1报数到7的出局,最后谁是猴王。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!