素數環 回溯

2022-02-14 01:49:06 字數 1061 閱讀 8944

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個位置,從原來...