這裡只介紹最直觀的做法:我們把沒有出列的人依次放進乙個容器(看作,實際上並沒有把這個容器直接寫出來),如果容器裡有m個元素,就讓那個元素出列並清空容器,然後從其後的元素開始重新進容器。
**:
#include
using
namespace std;
const
int max =
1001
;bool out[max]
;//判斷是否出列
//int arr[max];
intmain()
int p =1;
int round =0;
int call =1;
int con =0;
while
(round < n -1)
}//搜尋下乙個元素
p++;if
(p > n)
}for
(int i =
1; i < n +
1; i++)}
return0;
}
需要注意if裡面的等號一律用==(我除錯了好幾遍才過的)。 約瑟夫環 C 實現
include using namespace std void main int rem n 桌上剩餘人數 int pos 0 當前開始計數人的位置 int count 0 當前計數大小 一直迴圈到桌上只剩乙個人 while rem 1 if a pos true pos 輸出桌上剩餘的最後乙個人...
C 之約瑟夫環
問題原型 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所有人都自殺身亡為止。然而josephus 和...
C 之約瑟夫環
0,1,2,3,n 1這n個數排成乙個圈,從數字0開始,每次在圓圈裡面剔除第m個數字。求出這個圓圈最後乙個數字。乙個是使用鍊錶來模擬這個過程 使用公式推導 鍊錶模擬 int lastremaining solution int n,int m else return peoples.begin 公式...