1. 程式人生 > >Java猴子選大王

Java猴子選大王

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+"是猴子王");  //輸出這一隻猴子的位置
    	   }
       }
             
	}

}