演算法學習之素數環問題

2021-07-10 17:57:22 字數 410 閱讀 4197

1-n組成的素數環,素數環就是乙個陣列中後乙個數加前乙個數必須組成素數,a[i]+a[i-1]是素數,又因為是環狀所以,首末相加也要上素數即a[0]+a[n-1]是素數,因為是環狀所以會有很多重複的排列,我們要除去重複的排列,就要假定所有的排列都以1打頭。我們也是用回溯加剪枝來求素數環

#include #include using namespace std;

unsigned char visit[100];//判斷i是否用過,和dfs一樣

char prime = ;//0-32的素數表

int is_prime(int n)

void prime_ring(int *arry,int cur,int n)

else}}

}}int main()

演算法學習之素數

判斷是否是素數,素數又稱為質數,是大於1且除了本身沒有因數的自然數,如2,3,5,7,11等 演算法1 bool isprime int n int divisors,i divisors 0 for int i 1 i n i if n i 0 divisors return divisors 2...

演算法學習之約瑟夫環問題

問題 假設下標從0開始,0,1,2 m 1共m個人,從1開始報數,報到k則此人從環出退出,問最後剩下的乙個人的編號是多少?我的理解 設f m,k,i 為m個人的環,報數為k,第i個人出環的編號,m個人的環第i個出來的人就相當於m 1個人的環第i 1個出來的人,不過這個序號是相當於原來m個人的序號。但...

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

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