素数环 Primg Ring Problem
素数环
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=84562#problem/C
题意:
输入正整数n,把整数1~n组成一个环,使相邻的两个整数之和均为素数。输出时从整数1开始逆时针排列。
同一个环应恰好输出一次。n<=16


Sample Input
6
8
Sample Output
Case 1:
1 4 3 2 5 6
1 6 5 2 3 4 Case 2:
1 2 3 8 5 6 7 4
1 2 5 8 3 4 7 6
1 4 7 6 5 8 3 2
1 6 7 4 3 8 5 2 分析:
因为每个环对应一个排列,且排列总数高达2*10^13,为了防止超时用回溯法。
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int vis[],a[];
int n;
bool is_prime(int m)
{ if(m<=) return true;
int y=(int)sqrt(m);
for(int j=;j<=y;j++)
if(m%j==) return false;
return true;
}
void dfs(int cur)
{
if(cur==n&&is_prime(a[]+a[n-])) //递归边界(测试第一个和最后一个数)
{
for(int j=;j<n-;j++)
cout<<a[j]<<' ';
cout<<a[n-]<<endl;
}
else
{
for(int i=;i<=n;i++)
{ if(!vis[i]&&is_prime(i+a[cur-])) //如果i没有用过,并且与前一个数之和为素数
{
a[cur]=i;
vis[i]=; //设置标志
dfs(cur+);
vis[i]=; //清除标志
}
}
}
}
int main()
{
int t=;
while(cin>>n)
{ memset(a,,sizeof(a));
memset(vis,,sizeof(vis));
a[]=;
if(t++) cout<<endl;
cout<<"Case "<<t<<':'<<endl;
dfs();
}
return ;
}
素数环 Primg Ring Problem的更多相关文章
- UVA524 素数环 Prime Ring Problem
		
题目OJ地址: https://www.luogu.org/problemnew/show/UVA524 hdu oj 1016: https://vjudge.net/problem/HDU-10 ...
 - 洛谷UVA524 素数环 Prime Ring Problem
		
标签:搜索与回溯 题目: 从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数. 算法分析: 非常明显,这是一道回溯的题目.从1开始,每个空位有20种可能,只要填进去的数合法:与前面的数不相 ...
 - HDU - 1016 Prime Ring Problem 经典素数环
		
Prime Ring Problem A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., ...
 - 素数环:NYOJ--488--dfs||hdu-1016-Prime Ring Problem
		
/* Name: NYOJ--488--素数环 Author: shen_渊 Date: 15/04/17 15:30 Description: DFS,素数打个表,37以内就够用了 */ #incl ...
 - 1016-Prime Ring Problem,素数环,深搜!
		
Prime Ring Problem ...
 - Prime Ring Problem素数环(HDU1016)
		
Prime Ring Problem 思路:先看成一条链,往里头填数,满足任意相邻两数和为质数(这可以打表预处理出40以内的所有质数,扩展的时候枚举),填完了后检查首尾是否满足条件.字典序可以采用扩展 ...
 - uva 524 prime ring problem——yhx
		
Prime Ring Problem A ring is composed of n (even number) circles as shown in diagram. Put natural ...
 - hdu 1016   Prime Ring Problem(DFS)
		
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
 - Prime Ring Problem  +   nyoj 素数环  +  Oil Deposits  +  Red and Black
		
Prime Ring Problem Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) ...
 
随机推荐
- gdb optimized out错误解决
			
转自:http://blog.csdn.net/cws1214/article/details/12023093 when linux gdb debug, print a variable, suc ...
 - 六款值得推荐的android(安卓)开源框架简介(转)
			
1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1) JSON,图像等的异步下载: (2) 网络请求的排序(scheduli ...
 - matlab练习程序(Moravec算子)
			
这个算子算是图像历史上第一个特征点提取算法了,1977年提出的,很简单,拿来练手很合适. 算法原理如下: 1.选取一个合理的邻域遍历图像,这里是5*5邻域的.在邻域中依次计算,垂直,水平,对角与反对角 ...
 - 在Salesforce中避免对Trigger中Update的无限循环操作
			
在Salesforce中避免对Trigger中Update的无限循环操作: 处理Trigger的时候会有这么一个场景:在Trigger中想修改该Object的某些字段的值,那么如果们在程序中再用代码的 ...
 - jdk 1.8 Executors
			
Class Executors java.lang.Object java.util.concurrent.Executors public class Executors extends Objec ...
 - LoadRunner之安装、破解、汉化教程(一)
			
安装前,把所有的杀毒软件和防火墙关闭 安装前,把所有的杀毒软件和防火墙关闭 安装前,把所有的杀毒软件和防火墙关闭........ 注意事项: 安装前,把所有的杀毒软件和防火墙关闭. 若以前安装 ...
 - java.util.List接口的方法subList()的使用注意事项
			
JDK中,List接口有一个实例方法List<E> subList(int fromIndex, int toIndex), 其作用是返回一个以fromIndex为起始索引(包含),以to ...
 - 03 Javascript初识
			
Javascript语言(★★★★★) Javascript是基于对象和事件驱动的脚本语言,作用在客户端. 特点: * 交互性 * 安全性(不能访问本地的硬盘) ...
 - jquery笔记(效果)
			
显示/隐藏: $(selector).hide(speed, function()):隐藏 $(selector).show(speed, function()):隐藏 $(selector).tog ...
 - 图论 SRM 674 Div1 VampireTree 250
			
Problem Statement You are a genealogist specializing in family trees of vampires. Vampire famil ...