兩種方法解決約瑟夫問題

2021-08-28 21:09:19 字數 733 閱讀 6056

第一種:構建迴圈鍊錶,然後不斷遍歷鍊錶直到剩下最後乙個元素。

#include

#include

#include

#include

#include

#include

using namespace std;

typedef struct list

list,*link;

int main()

p -> next = head -> next;

p = head -> next;

free(head);

while(p -> next != p)         i < m - 1 是因為第一次迴圈 p 位於 第乙個節點 與第m個節點中間隔有m-2個節點 所以執行m-2次迴圈

p -> next = p -> next -> next;

p = p -> next;

}printf("%d\n",p -> data);

return 0;

第二種:

#include

#include

#include

#include

#include

#include

using namespace std;

int main()

if(q == 1) break;

}for(i = 0;i < n;i++)

return 0;

java解決約瑟夫環的兩種方法

選擇不同的資料結構,對於解決問題使用的演算法也會存在很大的不同,舉例分別使用組數和佇列來解決約瑟夫環問題。陣列解決約瑟夫環問題 param personnumber 人數 param number 數的數 public static void count int personnumber,int n...

兩種方法解決排列問題

time limit 1.000 sec memory limit 128 mb problem description 有4個互不相同的數字,請按序輸出由其中三個不重複數字組成的排列。input 4個整數。output 所有排列,輸出順序見樣例。sample input 1 2 3 4 out i...

兩種方法求解 約瑟夫環

題目描述 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為0的人開始報數,數到2的那個人出列 他的下乙個人又從0開始報數,數到2的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。解法一 基於陣列實現 public void solution int totalnum,...