約瑟夫環(huán)

2022-10-26 22:26

1個(gè)回答
約瑟夫環(huán)是一個(gè)數(shù)學(xué)的應(yīng)用問題:已知n個(gè)人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報(bào)數(shù),數(shù)到m的那個(gè)人出列;他的下一個(gè)人又從1開始報(bào)數(shù),數(shù)到m的那個(gè)人又出列;依此規(guī)律重復(fù)下去,直到圓桌周圍的人全部出列。
鏈表方法:這個(gè)就是約瑟夫環(huán)問題的實(shí)際場景,有一種是要通過輸入n,m,k三個(gè)正整數(shù),來求出列的序列。這個(gè)問題采用的是典型的循環(huán)鏈表的數(shù)據(jù)結(jié)構(gòu),就是將一個(gè)鏈表的尾元素指針指向隊(duì)首元素。 p->link=head   解決問題的核心步驟:(程序的基本算法)   1.建立一個(gè)具有n個(gè)鏈結(jié)點(diǎn),無頭結(jié)點(diǎn)的循環(huán)鏈表;   2.確定第1個(gè)報(bào)數(shù)人的位置;   3.不斷地從鏈表中刪除鏈結(jié)點(diǎn),直到鏈表為空。   void JOSEPHUS(int n,int k,int m) //n為總?cè)藬?shù),k為第一個(gè)開始報(bào)數(shù)的人,m為出列者喊到的數(shù)   {   /* p為當(dāng)前結(jié)點(diǎn) r為輔助結(jié)點(diǎn),指向p的前驅(qū)結(jié)點(diǎn) list為頭節(jié)點(diǎn)*/   LinkList p,r,list; /*建立循環(huán)鏈表*/   for(int i=0;idata=i;   if(list==NULL)   list=p;   else   r->link=p;   r=p;   }   p->link=list; /*使鏈表循環(huán)起來*/   p=list; /*使p指向頭節(jié)點(diǎn)*/   /*把當(dāng)前指針移動(dòng)到第一個(gè)報(bào)數(shù)的人*/   for(i=0;ilink;   }   /*循環(huán)地刪除隊(duì)列結(jié)點(diǎn)*/   while(p->link!=p)   {   for(i=0;ilink;   }   r->link=p->link;   printf("被刪除的元素:%4d ",p->data);   free(p);   p=r->link;   }   printf("\n最后被刪除的元素是:%4d",P->data);   }
相關(guān)問答
什么是約瑟夫環(huán)?
1個(gè)回答2022-10-17 18:28
約瑟夫問題的一種描述是:編號為1,2,……,n的n個(gè)人按順時(shí)針方向圍坐一圈,每人持有一個(gè)密碼(正整數(shù))。一開始任選一個(gè)正整數(shù)作為報(bào)數(shù)上限值m,從第一個(gè)人開始按順時(shí)針方向自1開始順序報(bào)數(shù),報(bào)到m時(shí)停止報(bào)...
全文
約瑟夫環(huán)的由來
1個(gè)回答2023-11-27 03:51
由古羅馬史學(xué)家約瑟夫提出。 約瑟夫環(huán)問題的由來可以追溯到古羅馬時(shí)期的歷史故事。故事中,將軍約瑟夫和40名將士被困在一個(gè)洞穴中。為了避免被俘,決定每隔兩個(gè)人殺死一人,直到只剩下兩個(gè)人投降。約瑟夫有預(yù)謀地...
全文
約瑟夫環(huán)問題
1個(gè)回答2022-08-25 13:18
約瑟夫環(huán)根本就不需要鏈表處理,只要一個(gè)一維數(shù)組就可以了。。你一定要用鏈表處理嗎,這個(gè)比較麻煩。。
約瑟夫環(huán)問題
2個(gè)回答2022-07-14 17:12
#include int main(){ int ff[300],n,m,nn,i,j; while(n!=0&&m!=0){ scanf("%d%d",&n,&m); ...
全文
約瑟夫環(huán)問題,幫忙了。
1個(gè)回答2022-11-04 18:48
你至少應(yīng)該合并問題 這樣大家也比較方便
約瑟夫的簡介
1個(gè)回答2024-02-09 12:35
公元37生于耶路撒冷,公元100年卒于羅馬。約瑟夫是羅馬帝國時(shí)期以為僧侶出身的猶太歷史學(xué)家,也是一位猶太法利賽教徒(Pharisee)。 約公元64年游歷羅馬,在公元66年猶太起義前夕返回耶路撒冷...
全文
約瑟夫問題:
1個(gè)回答2024-03-18 17:56
約瑟夫環(huán): 約瑟夫環(huán)問題的一種描述是:編號為1.2.3…….n的n個(gè)人按順時(shí)針方向圍坐一圈 ,每人手持一個(gè)密碼(正整數(shù)),開始任意選一個(gè)整數(shù)作為報(bào)數(shù)上限值,從第一 個(gè)人開始順時(shí)針自...
全文
約瑟夫問題
1個(gè)回答2024-06-11 09:12
你的問題是什么?若是編寫程序要說明你要用的語言,以下是C的參考: #include #define N 30 int yuesefu1(int data[],int sum,int k) { ...
全文
約瑟夫問題
1個(gè)回答2024-07-01 22:43
#include #include struct node{ int data; struct node *next; }; int main(){ int i,j,k,m...
全文
約瑟夫問題
1個(gè)回答2024-08-07 02:47
//約瑟夫環(huán): //這并告?zhèn)€程序有點(diǎn)小問題,你自己看看吧,現(xiàn)在沒時(shí)間改了,起始位置有點(diǎn)問題 #include #include int flag; typedef struct node ...
全文
熱門問答