c语言素数环问题(回溯)
2017-10-31 20:24
393 查看
Problem F
素数环问题
时限:1000ms 内存限制:10000K 总时限:3000ms
描述:把1到20这重新排列,使得排列后的序列A满足:
a. 任意相邻两个数之和是素数
b. 不存在满足条件a的序列B使得:A和B的前k(0 <= k <= 19)项相同且B的第k+1项比A的第k+1项小。(即按字典序排列的第一项)
输入:
没有输入。
输出:
输出A,两个数字之间用一个空格隔开,第一个数字前面和最后一个数字后面没有空格。
输入样例:
输出样例:
#include<stdio.h>
#include<stdlib.h>
int a[21],sum=0;
int isprime(int m)
{
for(int i=2;i*i<=m;i++)
if(m%i==0) return 0;
return 1;
}
void output()
{ sum++;
if(sum==2)
{
for(int i=1;i<=20;i++)
if(i==1)printf("%d",a[i]);
else printf(" %d",a[i]);
printf("\n");
exit(0);
}
}
void swap(int m,int i)
{
int t;
t=a[m];
a[m]=a[i];
a[i]=t;
}
void search(int m)//2,3,4...20,21
{
if(m>20)
{
if(isprime(a[20]+a[1]))
output();
}
else
{ for(int i=m;i<=20;i++)//只能和后面的数交换,而不能和前面的数交换
{
swap(m,i);
if(isprime(a[m-1]+a[m]))
search(m+1);
swap(m,i);
}
}
}
int main()
{
for(int i=1;i<=20;i++)
a[i]=i;
search(2);
return 0;
}
相关文章推荐
- 回溯经典-m图着色问题
- BFS + 回溯路径 POJ - 3984 迷宫问题
- 回溯--深度优先搜索(图的M着色问题 poj1129)
- N皇后问题与回溯法
- HDU2553 N皇后问题(回溯)
- 全面解析回溯法:算法框架与问题求解
- 【回溯】图的m着色问题
- 简单的迷宫问题(DFS+回溯)
- POJ 1321----棋盘问题(dfs+回溯)
- C++ 迷宫问题的回溯解法
- knight遍历棋盘问题,回溯应用
- 回溯算法----图的M着色问题
- 回溯法 -- 装载问题
- HDOJ/HDU 2553 N皇后问题 回溯加递归
- 2船装载问题 贪心及回溯法
- 符号三角形问题-回溯法
- N皇后问题之回溯法
- 经典问题的回溯算法
- Queen 八皇后问题 回溯经典解法
- 回溯求任务安排问题