素數環 遞迴(王道)

2022-06-24 10:54:12 字數 814 閱讀 8427

題意:給定乙個整數,求其滿足起點為1的素數環,,並把所有的素數環輸出來。

#include #include

using

namespace

std;

int ans[22];//

儲存環中每乙個被放入的數

bool hash1[22];//

標記之前已經被放入環中的數

intn;

int prime=;//

素數bool judge(int x)

return

false;}

void check()

printf("\n

");}void dfs(int

num)

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

}}int

main()

return0;

}

嘗試放入第num+1個數字時,我們依次嘗試放入所有在之前位置上未被使用的數字,假設當前x未被使用,將x放入第num+1個位置,標記x為已用,此時環中前num+1個數字全部確認,依次儲存在ans[1]到ans[num+1]中,再進行下乙個位置的列舉,即遞迴呼叫dfs。

當呼叫返回時,意味著當前num+1個數字確定為ans[1]到ans[num+1]中的值時對應的所有可行的答案已經全部處理完畢,此時需要改變ans[num+1]的值,從而進行新答案的搜尋。

所以,此時ans[num+1]的值將不再為已經被列舉過的x,而是乙個相異於x,同時又未在之前被使用過的新數字。那麼對後續數字而言,x是未被使用過的,是可以被放入後序任何乙個位置的,所以重新標記x為未使用,供後續數字選擇。

素數環問題

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

素數環 回溯

include stdafx.h include includebool isprime int ijudgednum return false void swap int itemp1,int itemp2 void generateperm int piscr,int isize,int icu...

素數環問題

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