已知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 ...