c 素數環問題

2021-10-04 18:42:18 字數 926 閱讀 7940

輸入n個數,組成乙個環,要求相鄰的兩個數之間和為素數。輸出時從整數1開始逆時針排列。同乙個環恰好輸出一次

樣例

輸入: 6

輸出: 1 4 3 2 5 6

1 6 5 2 3 4

此題有兩種解法:

第一種解法是全排序在逐個檢驗是否滿足題目條件,滿足題目條件則輸出。

第二種解法是用dfs(深度優先搜尋)演算法。

其中第二種方法比第一種方法快得多

#include

using

namespace std;

bool

isp(

int m)

}return

true;}

intmain()

do}if(ok)

cout

(next_permutation

(a+1

,a+n));

//生成下乙個排列,注意 1 的位置不變

}

<#include.h>

using

namespace std;

int a[20]

;//輔助陣列用於判斷當前的數是否用過;

bool

isp(

int m)

}return

true;}

/*bool isp(int m)

} return true;}*/

void

dfs(

int cur,

int n,

int a)

cout<}else}}

}int

main()

素數環問題

問題描述 用自然數1到20構成乙個素數環,環中的每個元素與其相鄰元素的和都構成素數。請程式設計實現並輸出這個環 這裡採用了遞迴策略,可以輸出所有情況,不過存在重複輸出問題,重複輸出數為n,環是沒有次序的 現在沒有想到好的解決方法。若自然數個數確定為20 則構環的數目相當大,程式執行時間也高得驚人。測...

素數環問題

素數環 時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 有乙個整數n,把從1到n的數字無重複的排列成環,且使每相鄰兩個數 包括首尾 的和都為素數,稱為素數環。為了簡便起見,我們規定每個素數環都從1開始。例如,下圖就是6的乙個素數環。輸入 有多組測試資料,每組輸入乙個n 0 n...

素數環問題

把從1到20這20個數擺成乙個環,要求相鄰的兩個數的和是乙個素數。c include include include using namespace std 列印結果 void printsolution const vector v cout bool check1 const vector v,...