5、題目:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。 思路:n長度的數組,boolean類型。出圈置為false,當最后只有一個true的時候,就是留下來的人。


public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入人的個數n:");
int n = sc.nextInt();
fun(n);
sc.close();
}

private static void fun(int n) {
boolean[] ps = new boolean[n];
int count = ps.length; //判斷是否是最后一個
//開始都有人,初始化為true
for (int i = 0; i < ps.length; i++) {
ps[i] = true;
}
//數到3剔除
for(int i = 0,j = 0;;i++){
if(ps[i]){
j++;
if(j == 3){
ps[i] = false;
j=0;
count --; //剔除一人少一人
}
}
//從開始繼續循環
if(i == ps.length -1){
i = -1;
}
if(count == 1){
break; //最后一個人退出循環
}
}

//輸出最后存在的那個人
for (int i = 0; i < ps.length; i++) {
if(ps[i]){
System.out.println("最后剩下的人的編號是:" + (i+1));
}
}
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。 有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。 有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。 有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。 python 實現:題目:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位 報數問題:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位 有10個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是第幾號的人 約瑟夫環問題:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。 【轉】約瑟夫環算法---------題目:有n個人圍成一圈,順序排號,從第一個開始報數(從1到3報數),凡報到3的人退出圈子,問最后最后留下的是原來第幾號的那位. 有n人圍成一圈,順序排號。從第1個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來的第幾號的那位。
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM