沒有查閱資料,硬想的,有點死板的演算法。
工具用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...