總時間限制: 1000ms 記憶體限制: 65536kb
描述 約瑟夫問題:有n只猴子,按順時針方向圍成一圈選大王(編號從1到n),從第1號開始報數,一直數到m,數到m的猴子退出圈外,剩下的猴子再接著從1開始報數。就這樣,直到圈內只剩下乙隻猴子時,這個猴子就是猴王,程式設計求輸入n,m後,輸出最後猴王的編號。
輸入 每行是用空格分開的兩個整數,第乙個是 n, 第二個是 m ( 0 < m,n <=300)。最後一行是:
0 0輸出
對於每行輸入資料(最後一行除外),輸出資料也是一行,即最後猴王的編號
樣例輸入
6 2
12 4
8 3
0 0
樣例輸出
5 1
7關鍵點:
1.模擬問題,注意要使用%求餘才能一圈圈報數。
2.flag陣列是從0-n-1的,因為0代表第n個猴子編號對n求餘的結果
3.cur指標其實代表的是下乙個要判斷的猴子的編號,所以設定flag陣列的時候要注意判斷臨界點0的情況。
#include
#include
using
namespace
std;
////錯誤百出
int n,m,flag[303];
void f()
cur=(cur+1)%n;
//cout<}
if(cur==0)flag[n-1]=0;
else flag[cur-1]=0;
nn--;
}for(int i=0;iif(flag[i]&&i!=0)
else
if(flag[i]&&i==0)
}}int main(int argc, char** argv)
}return
0;}
資料結構 約瑟夫問題
約瑟夫問題 上課結束,大家聽說第一周沒有程式設計題目,立刻就被鄙視了,為了糾正這個錯誤,咱們本週就來做點簡單題目。本題要求用迴圈鍊錶實現 約瑟夫問題是乙個經典的問題。已知n個人 不妨分別以編號1,2,3,n 代表 圍坐在一張圓桌周圍,從編號為 k 的人開始,從1開始順時針報數1,2,3,順時針數到m...
資料結構 約瑟夫問題
約瑟夫問題是乙個經典的問題。已知n個人 不妨分別以編號1,2,3,n 代表 圍坐在一張圓桌周圍,從編號為k 的人開始,從1開始順時針報數1,2,3,順時針數到m 的那個人,出列並輸出。然後從出列的下乙個人開始,從1開始繼續順時針報數,數到m的那個人,出列並輸出,依此重複下去,直到圓桌周圍的人全部出列...
資料結構 約瑟夫環問題
實驗一線性表的應用 實驗目的和要求 通過實驗進一步理解線性表的邏輯結構和儲存結構,提高使用理論知識指導解決實際問題的能力,熟練掌握鍊錶的實際應用。主要內容 題目1 josephus環問題 問題描述 約瑟夫 joseph 問題的一種描述是 編號為1,2,n的n個人按順時針方向圍坐一圈,每人持有乙個密碼...