素數環:從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個數,可以利用框架構造 需判斷數是否合法且相鄰兩個數之和為素數 函式判定 以及最後乙個數和第乙個數是否為素數 這裡可以在輸出時判定,節約...