把犯人圍城一圈,每次殺掉第七個,又從第八個開始殺掉第七個,直到剩下最後一個
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//假設有10個人
List<int> list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//用於記錄誰是第幾個
int index = 1;
//開始迴圈的殺人,數一次index+1
for (int i = 0; i < list.Count; i++) {
//如果index=7那麼對應的這個人將會被殺死
if (index == 7){
Console.WriteLine("殺死:"+list[i]);
//此處代碼是將數到的第七個殺死之後,那麼重新排序數組
//然後index的計數重新開始計算,i=-1,也開始重新迴圈
//無法用程式把這10人圍城一個圈,那麼就把這10人在圈的位置,重新組合
//比如,第一次遊戲開始,10人的第一次位置是1,2,3,4,5,6,7,8,9,10
//殺死位於第七個的人7之後,下一個是從8開始,這次的位置就是8,9,10,1,2,3,4,5,6
//這樣依次類推,殺第七個,下面的代碼就是這樣去重新組合新數組
List<int> temp = new List<int>();
for (int j = i+1; j < list.Count; j++){
temp.Add(list[j]);
}
foreach (int g in temp){
list.Remove(g);
}
//移除掉第七個
list.Remove(list[i]);
temp.AddRange(list);
list.Clear();
//新數組
list = temp;
//重新迴圈計算
index = 0;
i = -1;
}
//如果只剩下最後一個則跳出迴圈
if (list.Count == 1)
{
Console.WriteLine("最後活下來的人是:" + list[0]);
break;
}
//假如人還沒死到最後一個則繼續殺
if (i == list.Count - 1){
i = -1;
}
index++;
}
}
}
}