環球熱議:約瑟夫問題c語言代碼_約瑟夫問題c語言
2023-03-14 06:06:57 來源:互聯網
(相關資料圖)
1、約瑟夫問題:Joseph問題的一種描述是:編號為2、……、n的n個人按順時針方向圍坐一圈,每人持有一個密碼(正整數)。
2、一開始任選一個正整數作為報數上限值m,從第一個人開始順時針方向自1開始順序報數,報到m時停止報數,報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下一個人開始重新從1報數,如此下去,直至所有人全部出列為止。
3、2、例程:#include#includetypedefintElemType;typedefstructLNode{ElemTypedata;intnum;structLNode*next;}LNode,*LinkList;voidCreateList_L(LinkList*L,intn){inti=0;ElemTypee;LinkListp,q;*L=(LinkList)malloc(sizeof(LNode));(*L)->next=NULL;(*L)->data=n;q=*L;while(idata=e;p->num=i+1;p->next=NULL;q->next=p;q=p;i++;}p->next=(*L)->next;}voidPrintList(LinkListL){inti=0;LinkListp;p=L->next;while(idata){printf("%5d",p->data);p=p->next;i++;}printf("");}voidPut(LinkList*L){inti,m;LinkListp,q;printf("inputanumber:");scanf("%d",&m);q=(*L)->next;while((*L)->data){for(i=0;inext;}printf("%5d",q->num);m=q->data;p->next=q->next;free(q);q=p->next;(*L)->data=(*L)->data-1;}}voidmain(){LinkListL;inta;printf("請輸入人數:");scanf("%d",&a);printf("請輸入密碼:");CreateList_L(&L,a);printf("您輸入的數字為:");PrintList(L);Put(&L);}#includeint main(){ int n,m; int a[300]; int i,j,k; for(;;) { scanf("%d %d",&n,&m); if(n==0)break; for(i=0;i
本文分享完畢,希望對大家有所幫助。
責任編輯:Rex_14