約瑟夫問題

2022-08-05 13:42:16 字數 758 閱讀 7297

問題描述

約瑟夫問題:有n只猴子,按順時針方向圍成一圈選大王(編號從1到n),從第1號

開始報數,一直數到m,數到m的猴子退出圈外,剩下的猴子再接著從1 開始報數。就這樣,

直到圈內只剩下一隻猴子時,這個猴子就是猴王,程式設計求輸入n,m後,輸出最後猴王的編

號。輸入資料

每行是用空格分開的兩個整數,第一個是 n, 第二個是 m ( 0 < m, n < 300)。最後一行

是:0 0

輸出要求

對於每行輸入資料(最後一行除外),輸出資料也是一行,即最後猴王的編號

輸入樣例:

6 212 4

8 30 0

輸出樣例:

陣列實現:

#include void main()

}if(index < m-1)

index++;

else

index=0;

}printf("%d\n",loc);

}

連結串列實現:

#include struct monkey

;int main()

curr->next=head;

int p=1;

while(curr->next!=null)

if(p==t)

p++;

curr=curr->next;

} return 0;

}