Josephus 約瑟夫 問題

2021-05-24 21:13:56 字數 944 閱讀 8721

問題描述:

已知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次停下,又將拿著烤肉的人從圈中退出,圈縮小,依次類推,直到剩下乙個人,那個人就可以品嚐烤肉了,作程式,看看最後的獲勝者是誰?分析 ...