殺人遊戲 約瑟夫問題

2021-06-19 05:32:53 字數 436 閱讀 1978

沒有查閱資料,硬想的,有點死板的演算法。

工具用arraylist ,每一次遍歷整個佇列,計算出總共被殺的人的所有位置,將計算出的位置的所有值設為0;然後將值為零的一次性刪除 arraylist.remove(0) ;直到佇列的長度為1。需要注意的是:只能一次性刪除遍歷整個一輪後的佇列位置,因為arraylist  每刪除乙個,長度都會變一次,會打亂順序。

具體:用乙個arraylist 順序裝入n人的編號;

關鍵**:    for(int yushu=0;arraylist.size()>1;yushu=(srcsize+yushu)%3)

arraylist.set(3*i+2, 0);

演算法二:

用乙個計數器   count,從1開始,每計算到3,移掉此位置的值,count重新變為1

約瑟夫問題(遇三殺人)

list1 i for i in range 1 40 print list1 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 k ...

約瑟夫環,殺人遊戲(靜態迴圈鍊錶實現)

覺得用靜態迴圈鍊錶最划算了。1 動態鍊錶要動態分配,指標移來移去,釋放指標等等,弄得很煩,容易出錯。2 用迴圈鍊錶是當然的了。ds 似迴圈靜態鍊錶 include include include using namespace std int kill you const int sum 1,con...

殺人遊戲 深搜

輸入格式 輸出格式 樣例輸入 5 4 1 2 1 3 1 4 1 5樣例輸出 0.800000資料範圍與提示 上 void add int x,int y head x tot void dfs int x int main for int i 1 i n s i for int i 1 i n s...