N個人圍成一圈數到3(或3的倍數)時出圈,問剩下的人是誰?

sunyong_y發表於2020-11-22

**

N個人圍成一圈數到3(或3的倍數)時出圈,問剩下的人是誰?

**
題目解釋:如圖wisjyzxkflm(代表11個人)圍成一個圈,從w開始喊1,接著i喊2,s喊3,j喊1,y喊2,z喊3……l喊1,m喊2。所以第一輪淘汰的是:szf。然後繼續w喊3,i喊1,j喊2……
在這裡插入圖片描述
第一輪:
在這裡插入圖片描述
……
最後得到:x,x為贏家。
值得注意的是:淘汰的人將不再參加遊戲,不再參與排序,同時這也是程式設計的一個小難點(因為下標改變了)。

import java.util.LinkedList;

import java.util.Scanner;

public class Taotai {

	public static void main(String[] args) {
		System.out.println("請輸入參與遊戲的人:(以英文逗號分隔開)");
		Scanner sc=new Scanner(System.in);
		String s=sc.next();
		String s1[]=s.split(",");   //將輸入的以英文逗號分隔開,存入陣列中
		LinkedList<String> li=new LinkedList<String>();  //new一個集合
		for (int i = 0; i < s1.length; i++) {
			li.add(s1[i]);
		}
		
		int j=0;                   //j即是喊的數字
		while(li.size()>=2) {   
			for (int i = 0; i < li.size(); i++) {
				j++;
				if(j%3==0) {
					j=0;               //這句可要可不要  
					li.remove(i);
					i-=1;               //最重要的一步
				}	
			}		
						
		}		
			
		System.out.println("贏的人是:"+li);
	}

}

執行結果:
在這裡插入圖片描述

相關文章