演算法設計與分析回溯演算法之素數環問題

2021-09-28 21:39:31 字數 589 閱讀 9870

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

【演算法流程】

1、資料初始化;

2、遞迴填數:判斷第i個數填入是否合法;

a、如果合法:填數;判斷是否到達目標(20個已填完):

是,列印結果;不是,遞迴填下乙個;(剪枝條件)

b、如果不合法:選擇下一種可能;

#include#include#include#includeusing namespace std;

bool b[21]=; //判斷i是否出現在素數環中

int total=0,a[21]=; //a記錄素數環中的每乙個數

int search(int t); //回溯過程。形參表示素數環中的數的編號

int print(); //輸出方案

bool pd(int,int); //判斷素數

int search(int t)

else

search(t+1);

b[i]=0;

}}int main()

素數環 回溯演算法

設計 這個素數環有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...

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

題目描述 從1到20這20個數擺成乙個環,要求相鄰的兩個數的和是乙個素數。請輸出所有方案 一本通例5.3 題目分析 將題目想象成一張二維表,要往裡面填1 20這20個數,可以利用框架構造 需判斷數是否合法且相鄰兩個數之和為素數 函式判定 以及最後乙個數和第乙個數是否為素數 這裡可以在輸出時判定,節約...