素數環 DFS +回溯
void DFS(int c)
{
a[0]=1;// 初始為1
if(c==n&&!su[a[0]+a[n-1]])// 如果 c==n 則結束 如果 第一個與最後一個和也為素數 則 輸出
{
for(int i=0; i<n-1; i++)
printf("%d ",a[i]);
printf("%d",a[n-1]);
printf("\n");
}
else
{
for(int i=2; i<=n; i++)
if(!visit[i]&&!su[i+a[c-1]])// 如果 次數 與前一個數相加為素數 且沒被拜訪過 則 賦值
{
a[c]=i;
//printf("%d ",a[c]);
visit[i]=1;// 標記
DFS(c+1);// 繼續查詢下一行
visit[i]=0;//回溯
}
}
}
相關推薦
素數環 DFS +回溯
int visit[200]; void DFS(int c) { a[0]=1;// 初始為1 if(c==n&&!su[a[0]+a[n-1]])// 如果 c==n 則結束 如果 第一個與最後一個和也為素數 則 輸出 { for(int
素數環 dfs+回溯
題意:給定一個整數,求其滿足起點為1的素數環,,並把所有的素數環輸出來。型別:dfs+回溯思路:因為起點為1,所以每次都從1開始進行深度優先搜尋,設定一個數組ring,用來存放素數環的路徑,當找到素數環的時候就列印環的路徑。其中有一個剪枝的操作,如果給定的整數為奇數,那麼肯定
nyoj ACM:素數環(DFS 回溯 遞迴)
素數環 時間限制:1000 ms | 記憶體限制:65535 KB 難度:2 描述 有一個整數n,把從1到n的數字無重複的排列成環,且使每相鄰兩個數(包括首尾)的和都為素數,稱為素數環。
1571 - 素數環 DFS深度優化搜尋的應用
1571 - 素數環 時間限制:1秒 記憶體限制:128兆 題目描述 有一個整數n,把從1到n的數字無重複的排列成環,且使每相鄰兩個數(包括首尾)的和都為素數,稱為素數環。 為了簡便起見,我們規定每個素數環都從1開始。例如,下圖就是6的一個素數環。
素數環問題---回溯
size pre argv 。。 color cstring ++ ons 結果 素數環 題目:輸入正整數n,把整數1。2,3,...,n組成一個環。使得相鄰兩個整數之和均為素數。 輸出時從整數1開始逆時針排列。 同一個環應該恰好輸出一次。n<=16 分析:首
UVA 524 素數環 【dfs/回溯法】
prim output %d set class script int 素數環 ogr Description A ring is composed of n (even number) circles as shown in diagram. Put natu
nyoj 488素數環 回溯dfs
題目連結:http://acm.nyist.net/JudgeOnline/problem.php?pid=488 有一個整數n,把從1到n的數字無重複的排列成環,且使每相鄰兩個數(包括首尾)的和都為素數,稱為素數環。 為了簡便起見,我們規定每個素數環都從1開始。例如,下
noj算法 素數環 回溯法
clu clas 輸入 check col 回溯法 name bsp mes 描述: 把1到20這重新排列,使得排列後的序列A滿足:a. 任意相鄰兩個數之和是素數b. 不存在滿足條件a的序列B使得:A和B的前k(0 <= k <= 19)項相同且B的第k+1
素數環(簡單的回溯運用)
題目描述 輸入正整數n,把整數1,2,3,…n組成一個環,使得相鄰兩個整數之和均為素數。輸出時從整數1開始逆時針排列。同一個環應恰好只輸出一次。n<=16 #include"stdio.h" int n; static int vis[17];運用的是靜態性的變數,初值為0;此
HDU 1016(DFS素數環)
初看很難 其實很簡單的一道題目 大致就是1-n 把這n個數填到一個環裡 相鄰的和是素數 求怎麼填 我開始的時候 覺得要順時針還要逆時針 心想繁瑣 就直接找了部落格 然後部落格的程式碼異常簡潔啊 突然領悟了 逆時針的只要水平翻轉一下一樣是個順時針的 也就是說 這個逆時針已經在所有情況裡了
回溯法解決素數環
/*********************************************************************** 輸入正整數n,把整數1,2,3……,n組成一個環,使得相鄰兩個整數之和均為素數,輸出時從整數1開始逆時針排序.同一個環應恰好輸
UVA-524 素數環 回溯
經典回溯題 #include <cstdio> #include <cstring> #include <vector> #include <queue> #include <iostream> #i
hdu 1016 Prime Ring Problem(dfs,素數環)
Prime Ring Problem Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I
(回溯Uva524)素數環
題目 輸入正整數,把整數1,2,3,···,n組成一個環,使得相鄰兩個整數之和均為素數。輸出時從整數1開始逆時針排列。同一個環應恰好輸出一次。n<=16 樣例輸入 6 樣例輸出 1 4 3 2 5 6 1 6 5 2 3 4 分析與解答
c++演算法之回溯 素數環(二)
Description 輸入正整數n,把整數1,2,3,…,n組成一個環,使得相鄰兩個整數之和均為素數。把全部的解按字典序排序後,從1開始編號,依次輸出指定編號的k組解。最後一行輸出總的方案數。同一
hdu 1016 素數環 深搜,回溯
#include<iostream> using namespace std; #include<cstdio> #include<cmath> #include&
素數環(dfs)
原題: Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2720
回溯經典之素數環問題
問題描述:假定有從1...n這n(n<=16)個數,求其中一個序列,使得相鄰兩個數的和是素數,並且第一個和最後一個數也是素數 思路 1.我們可以假定已經有一個序列滿足任意兩個數之和是素數 2.下
《資訊學奧賽一本通》搜尋與回溯章節--素數環問題
題目:素數環:從1到20這20個數擺成一個環,要求相鄰的兩個數的和是一個素數 簡單的搜尋與回溯 #include <iostream> #include <cmath> us
[DFS]《奧賽一本通》 素數環
原題:在書上,大致就是:將從1到20這20個整數圍成一個圓環,若其中任意2個相鄰的數字相加,結果均為素數,那麼這個環就成為素數環。 時間:2014.1.27 型別:回溯,dfs 原始碼: #include<iostream> using namespace