約瑟夫環(迴圈鍊錶求解)

2021-10-10 14:53:40 字數 665 閱讀 6450

已知n個人(以編號1,2,3,..., n分別表示)圍坐在一張圓桌周圍從編號為1的人開始報數,數到m的那個人出列;他的下乙個人又從1開始報數,數到m的那個人又出列;依次規律重複下去,知道圓桌只剩下乙個人,求這個人編號。
建立迴圈鍊錶,賦初始值

外迴圈次數為n,迴圈內部每次找定乙個值不為0的元素,連續訪問m次,當訪問到第m個元素時,如果當前值不為0,輸出。

繼續訪問,直至全部輸出

#include

#include

typedef

struct lnode

lnode;

//構建迴圈鍊錶

void

createlist

(lnode *l,

int n)

p->next = l;

}int

main()

p = p->next;

j++;}

//第m個幸運兒,通過遍歷找到乙個不為0的值,該值便是第m個幸運兒

while

(p->data ==0)

printf

("%d "

, p->data)

; p->data =0;

}return0;

}

迴圈鍊錶(約瑟夫環)

約瑟夫環是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。要通過輸入n,m,k三個正整數,來求出列的序列。這個問題採用的是典型的...

用迴圈鍊錶求解約瑟夫環問題

約瑟夫環問題 已知 n 個人 n 1 圍坐一圓桌周圍,從 1 開始順序編號,從序號為 1 的人開始報數,順時針數到 m 的那個人出列。下乙個人又從 1 開始報數,數到m 的那個人又出列。依此規則重複下去,直到所有人全部出列。請問最後乙個出列的人的初始編號。輸入輸出 輸入人數 n,所報數 m,輸出最後...

迴圈鍊錶應用 約瑟夫環

約瑟夫環是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。include includetypedef struct node ...