回溯演算法求素數環

2022-05-09 20:17:01 字數 912 閱讀 1001

把從1到n(n>=2)這n個數擺成乙個環,要求相鄰的兩個數的和是乙個素數,找出所有滿足條件的環。

1> 解向量:

2> 解空間樹:排列樹,(n-1)!個葉子結點

3> 剪枝函式:isprime( x[t-1]+x[t] ),t=2,3,···,n  約束函式

三. 演算法實現

1 #include2 #include3

using

namespace

std;45

int n;//

素數環中的數字個數

6int sum=0;//

可行方案數

7int arr[100];//

存放素數環89

bool isprime(int

x)1019}

20return

true;21

}2223//

回溯法24

void backtrack(int

t)25

36 cout<

38}39else

4048

swap(arr[t],arr[i]);49}

50}51}

5253

void

main()

5464 backtrack(1

);65 cout<

可行方案數為:

"66 cout<

----------------

"<

67 cout<

請輸入素數環中數字的個數:";

68}69 }

素數環 回溯演算法

設計 這個素數環有20個位置,每個位置可以填寫1 20的整數,可以對每個位置從1搜尋 約束條件 1 與前面已經填寫的數不重複 2 與前乙個數的和為素數 3 最後乙個數與第乙個數的和為素數 在填寫第k個位置時,如果滿足約束條件,則繼續填寫k 1個位置 如果1 20都不滿足,就回溯到k 1個位置,從原來...

素數環 回溯

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 2 created by arc on 2020 5 1.3 勞動節快樂!45 6 從一到二十個數擺成乙個環,要求相鄰兩個數的和是素數 包括 和 保證第乙個數為一 要不每個還都要輸出num遍 7 輸出所有環8 9 多工,挨個試,用回溯 回溯也是某種意義上的dfs吧 1011 include 12...