約瑟夫環問題,幫忙了。求解約瑟夫環的思路分析

2025-01-21 19:25:08 字數 2023 閱讀 6968

1樓:雨愁軒

#include ""

void main(void)

int cont2,ele,number,start,*person,spaker,last,cont; do

printf("how many element do you want: "一共多少人*/

scanf("%d",&ele);

printf("which number cause out:")數到幾則退出圓桌*/

scanf("%d",&number);

printf("which person to start:")從第幾個人開始數*/

scanf("%d",&start);

當總數小於1,或者鑰匙數小於1,或者開始數數的人編號比最大人數還大說明輸入有誤,需要重新輸入*/

while(ele<1||number<1||start<1||start>ele);

分配一段空間用於儲存這些數如果申請空間失敗則退出*/

if((person =(int *)calloc((ele+1),sizeof(int)))null)

printf("out of memory!!!

exit(0);

printf("the order is:"

set person */

for(cont = 1;cont<=ele;cont++)

person[cont]=cont+1;

person[ele]=1;

spaker = start;

start say numbers */

for(cont = 0;contfor(cont2=1;cont2last = spaker;

spaker = person[spaker];

cont++;

printf(" d",person[last]);

person out */

person[last] =person[spaker];

spaker = person[spaker];

printf(" \t\t\t\t\t\tanykey to exit");

bioskey(0);

2樓:網友

你至少應該合併問題。

這樣大家也比較方便。

求解約瑟夫環的思路分析

3樓:匿名使用者

約瑟夫環。

是乙個數學的應用問題:

已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列;他的下乙個人又從1開始報數,數到m的那個人又出列;依此規律重複下去,直到圓桌周圍的人全部出列。

這個就是約瑟夫環問題的實際場景,有一種是要通過輸入n,m,k三個正整數,來求出列的序列。這個問題採用的是典型的迴圈連結串列的資料結構,就是將乙個連結串列的尾元素指標指向隊首元素。 p->link=head

解決問題的核心步驟:

1.建立乙個具有n個鏈結點,無頭結點的迴圈連結串列。

2.確定第1個報數人的位置。

3.不斷地從連結串列中刪除鏈結點,直到連結串列為空。

void josephus(int n,int k,int m) //n為總人數,k為第乙個開始報數的人,m為出列者喊到的數。

p>link=list; /*使連結串列迴圈起來*/

p=list; /*使p指向頭節點*/

把當前指標移動到第乙個報數的人*/

for(i=0;ilink;

*迴圈地刪除佇列結點*/

while(p->link!=p)

r->link=p->link;

printf("被刪除的元素:%4d ",p->data);

free(p);

p=r->link;

printf("最後被刪除的元素是:%4d",p->data);}

約瑟夫環

4樓:網友

lz啊,這樣的問題上一大堆,可以上網copy嗎。

乙個約瑟夫問題求解,高手請進

非連結串列的。include iostream using namespace std define m int count int order m void joseph int n,int k,int m int flag m int count for int i k i n i if flag ...

c語言程式設計問題 約瑟夫問題求解,C語言程式設計問題 約瑟夫問題求解

include include n表示最初有多少個人,m表示報數到多少的人離開,函式joseph返回最後剩下的人的編號 這個演算法應該比較經典,等高手解答。我的想法的是,兩數列不斷交替篩選。用一個迴圈連結串列就可以完成了!include struct nodenode,list,p,r void j...

我用matlab求解約束非線性規劃問題,但是老是出現下面

看到數字了麼,這裡的數字,代表滾動速度 這裡輸入文字 你可以試著修改,回具體需要什答麼樣子的可以根據實際來弄。這個是個最簡單的能自己滾動的 了。根本不需要js運算就能成功的。求助一個用matlab求解非線性規劃的問題,不勝感激!1.把 x,fval fmincon fun x0,a,b,aeq,be...