輸入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,...