問題描述:
已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。從編號為1的人開始報數,數到m的那個人出列;他的下乙個人又從1開始報數,數到m的那個人又出列;依此規律重複下去,直到剩下最後乙個人。程式的意圖是求出最後留下的人的編號。
/*******c++實現************/
#include
#include
#include
using namespace std;
template//c++模板
struct node};
int main(int argc,char **argv)
cout/**************c語言實現****************/
#include
#include
#include
typedef int item;
typedef struct node* link;
struct node;
//這裡將malloc函式進行包裹,主調函式(本例子就是main函式)省去重複判斷呼叫malloc是否成功!
void* malloc(size_t len)
return p;}
int main(int argc,char **argv)
int n=atoi(argv[1]),m=atoi(argv[2]);
link x=(link)malloc(sizeof *x);
link t=x;
x->item=1;
x->next=x;
int i=2;
for(;i<=n;i++)
x->next=t;
while(x!=x->next)
printf("the last is %d/n",x->item);}
輸出:./a.out 9 5 8
約瑟夫(Josephus)問題
一群小孩圍成一圈,任意假定乙個數n,從第乙個小孩起,順時針方向數,每數到第m個小孩時,該小孩便離開。小孩不斷離開,圈子不斷縮小。最後剩下的乙個小孩便是勝者。求勝者的編號?函式名稱 josephus 作 成 者 erick.wang 作成日期 2016 07 19 返 回 值 void 參 數 m,n...
josephus(約瑟夫)問題
author zhangchao time 2011年3月31日17 24 11 from c語言競賽題目大全第三題 include include 有 n 個小孩圍成一圈,給他們從1 開始依次編號,現指定從第 w個開始報數,報到第s 個時,該小 孩出列,然後從下乙個小孩開始報數,仍是報到 s 個出...
Josephus問題(約瑟夫環)
描述 有n個人坐在一圈做遊戲,給他們編號為1到n,現從1號人開始傳遞乙份烤肉,傳遞m次停下,將拿著烤肉的人從圈中退出,圈縮小,將烤肉給退出的人後面的人,然後開始繼續傳遞m次停下,又將拿著烤肉的人從圈中退出,圈縮小,依次類推,直到剩下乙個人,那個人就可以品嚐烤肉了,作程式,看看最後的獲勝者是誰?分析 ...