逢3退1的Java算法(雙向迴環鏈表算法)
package test;
public class Cout3Quit {
public static void main(String[] args)
{
int n=1;
boolean[] arr = new boolean[n]; // 創建一個布爾型數組
int contNum = 0; // 數數,計算數了多少個,數到3就退1個
int index = 0; // 第幾個位置,數到的位置
int arrlength = arr.length; // 數字隊列還有多少個
System.out.println(arr[arrlength-1]);
for (int i = 0; i < arr.length; i++)
{
arr[i] = true; // 把數組的值得全部置爲true
}
while (arrlength > 1) // 留下最後一個
{
if (arr[index] == true)
{
contNum++; // 從1開始數
if (contNum == 3) // 從1開始的,數到3就是第三個數字了
{
arr[index] = false; // 數到第三個數,把它的值變爲false
arrlength--; // 數組長度減去1
contNum = 0; // 重新數數
}
}
index++; // 每判斷一個,加1
if (index == arr.length) // 判斷是否到了最後的數字,到了,重新從0開始
{
index = 0;
}
}
// 打印數組中有true值的那個下標值,即最後那個是第幾個
for (int j = 0; j < arr.length; j++)
{
if (arr[j] == true)
{
System.out.println("最後留下來的是第"+String.valueOf(j+1)+"個");
}
}
}
}
相關熱門文章
給主人留下些什麼吧!~~
評論熱議
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.