1//2//created by arc on 2020/5/1.3//
勞動節快樂!45
/*6* 從一到二十個數擺成乙個環,u要求相鄰兩個數的和是素數(包括1和20),保證第乙個數為一(要不每個還都要輸出num遍)
7* 輸出所有環8*/
9//多工,挨個試,用回溯...回溯也是某種意義上的dfs吧
1011 #include 12
using
namespace
std;
13bool b[100]=;//
判斷下標為i的數有沒有被用過
14int a[100]=;//
判斷每個數裡面放的是什麼
15int total=0;//
總個數16
void print();//
列印17
bool pd(int ,int);//
判斷傳入的兩個數和是否為素數
18int search(int);//
回溯19
intnum;
2021
intmain()
30int search(int
t)49}50
else
51 search(t+1
);52 b[i]=0;53
545556}
5758}59
return0;
60}61void
print()
67 cout<<"\n"
;68}69
bool pd(int a,int
b)
有幾個問題:
第一:有的版本說是不要把第乙個數固定死,但是我覺得不這樣的話,可能跑程式就像死迴圈..
(根據xty dl的估計,正常的電腦,16大概需要20min,而20就需要8000min左右)
我一開始因為這個問題以為是死迴圈了...
第二個問題:
還是,在搞t,i回溯的時候千萬別混了啊!有時候在i的for 裡面出現的聳人聽聞的j.....
素數環 回溯
include stdafx.h include includebool isprime int ijudgednum return false void swap int itemp1,int itemp2 void generateperm int piscr,int isize,int icu...
素數環問題(回溯)
素數環問題描述 問題描述 將從1到n這n個整數圍成乙個圓環,若其中任意2個相鄰的數字相加,結果均為素數,那麼這個環就成為素數環。注 第1個位置恒為1 include includeint n 環內元素個數 int p 10 p i 表示第i個位置的元素 p 1 1 第1個位置恒為1 int hash...
素數環 回溯演算法
設計 這個素數環有20個位置,每個位置可以填寫1 20的整數,可以對每個位置從1搜尋 約束條件 1 與前面已經填寫的數不重複 2 與前乙個數的和為素數 3 最後乙個數與第乙個數的和為素數 在填寫第k個位置時,如果滿足約束條件,則繼續填寫k 1個位置 如果1 20都不滿足,就回溯到k 1個位置,從原來...