XDOJ1010 素數環問題

2021-06-23 06:06:17 字數 1000 閱讀 8483

description

有乙個由n個數字相連組成的圓環(n<20),組成圓環的數字分別為1,2,3...n-1,n.要求每兩個相鄰元素的和為素數。(注意:第乙個元素始終為1)。  

input

n (0output

要求輸出所有符合條件的組成圓環的元素,每個符合條件的圓環按順時針或者逆時針將元素依次輸出,輸出格式見樣例。要求按字典序輸出。

每例以空行分開。

sample input68

sample output

case 1:

1 4 3 2 5 6

1 6 5 2 3 4

case 2:

1 2 3 8 5 6 7 4

1 2 5 8 3 4 7 6

1 4 7 6 5 8 3 2

1 6 7 4 3 8 5 2

解題思路:

這個題主要考察兩個問題,乙個是素數的求解,另乙個是深度優先遍歷。對於素數的求解由於是40以的素數,可以在程式中直接給出。對於另個dfs,當時還直沒有寫出來,最後還是參考了網上的程式。

如果n是大於1的奇數,那麼肯定是無解的,因為必有兩個奇數相鄰。

#include#includeusing namespace std;

const int primen = 12;

int primes[primen]=;

bool isprime[40];

bool incircle[21];

int p[21];

void dfs(int nth,int n)

for(int i=1;i<=n;++i)

incircle[i] = false;

p[1] = 1;

dfs(1,n);

cout<}

}

素數環問題

問題描述 用自然數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,...