c 演算法之回溯 素數環(一)

2021-08-01 18:55:21 字數 768 閱讀 3873

題目描述:從1到20這20個數擺成乙個環,要求相鄰的兩個數的和是乙個素數。請輸出所有方案(一本通例5.3)

題目分析:將題目想象成一張二維表,要往裡面填1~20這20個數,可以利用框架構造

需判斷數是否合法且相鄰兩個數之和為素數(函式判定);以及最後乙個數和第乙個數是否為素數(這裡可以在輸出時判定,節約時間)。

程式實現

#include#includeint a[21],k,sum,num=1; 

bool b[21]=;

bool p(int s) //判斷素數

void print() //輸出,注意格式

int search(int r) }

int main()

另外,像判斷素數這樣的判斷,例:判斷乙個二維陣列是否全標記為1,一般順向思維是遍歷求為1的元素個數再與總數判等。其實可以做標記(或函式直接return),只要其中乙個不滿足條件便標記退出,更快。從1

到20這另外2: 0

個數擺成乙個環,要求相鄰的兩個數的和是乙個素數。 從

1到20這

20個數擺成乙個環,要求相鄰的兩個 從

1到20這

20個數擺成乙個環,要求相鄰的兩個數的和是乙個素數。從1

到20這20

個數擺成乙個環,要求相鄰的兩個數的和是乙個素數。

c 演算法之回溯 素數環(二)

輸入正整數n,把整數1,2,3,n組成乙個環,使得相鄰兩個整數之和均為素數。把全部的解按字典序排序後,從1開始編號,依次輸出指定編號的k組解。最後一行輸出總的方案數。同乙個素數環只算一次。第1行 2個整數,n n 18 和k 1 k 10 第2行 共有k個從小到大排列的整數,表示要輸出的解的編號。前...

素數環 回溯演算法

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

回溯演算法求素數環

把從1到n n 2 這n個數擺成乙個環,要求相鄰的兩個數的和是乙個素數,找出所有滿足條件的環。1 解向量 2 解空間樹 排列樹,n 1 個葉子結點 3 剪枝函式 isprime x t 1 x t t 2,3,n 約束函式 三.演算法實現 1 include2 include3 using name...