素數環的演算法分析

2021-06-29 12:55:13 字數 686 閱讀 5646

最近在做演算法時碰到這樣一道題目,題目是這樣的:

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

這是乙個典型的回溯演算法的解決案例,相當於是把n個數全排列的演算法的衍生。**如下:

#include #include #define add(a,b) a+b

int b[20];

void init();

int isprime(int);

void swap(int,int);

void printresult();

void search(int);

int main()

int isprime(int num);

int i;

for(i=0;i<11;i++)

return (0);

}void swap(int m,int i)

void init()

}void printresult()

printf("\n");

}void search(int m)

return;

}else

swap(m,i);}}

}

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

這是一道典型的用回溯演算法解決的題目。是

素數環 回溯演算法

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

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

素數環 從1到20這20個數擺成乙個環,要求相鄰的兩個數的和是乙個素數。演算法流程 1 資料初始化 2 遞迴填數 判斷第i個數填入是否合法 a 如果合法 填數 判斷是否到達目標 20個已填完 是,列印結果 不是,遞迴填下乙個 剪枝條件 b 如果不合法 選擇下一種可能 include include ...

回溯演算法求素數環

把從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...