UVA524-Prime Ring Problem
2015-08-03 16:53
344 查看
判断相邻两个数的和是不是素数,PS:还要判断数组第一个和最后一个。
一个典型的dfs,用vis来判断是否使用过,没有则加深,否则回溯。
一个典型的dfs,用vis来判断是否使用过,没有则加深,否则回溯。
#include<stdio.h> #include<algorithm> #include<string.h> #include<math.h> using namespace std; int isp[50],n; void cal() { memset(isp,0,sizeof isp); for(int i=3;i<=31;i++) { int k=0; for(int j=2;j<=sqrt(i);j++) if(i%j==0) {k=1;break;} if(!k) isp[i]=1; } } int A[20],vis[20]; void dfs(int cur) { if(cur==n&&isp[A[0]+A[n-1]]){ for(int i=0;i<n;i++) printf(i==n-1?"%d\n":"%d ",A[i]); } else for(int i=2;i<=n;i++) if(!vis[i]&&isp[i+A[cur-1]]){ A[cur]=i; vis[i]=1; dfs(cur+1); vis[i]=0; } } int main() { int cas=1; cal(); while(scanf("%d",&n)!=EOF) { if(cas>1) puts(""); printf("Case %d:\n",cas++); for(int i=0;i<n;i++) A[i]=i+1; memset(vis,0,sizeof vis); dfs(1); } return 0; }
相关文章推荐
- 内存数据网格hazelcast的一些机制原理
- 非关系型数据库Redis学习(2)
- Win10正式版右下角总显示隐藏启用病毒防护的提示该怎么办?
- win10升级太慢咋办?win10升级太慢原因及技巧介绍
- 【CODEFORCES】 A. Exams
- centos6.6设置samba和nginx访问用户家目录
- 排列组合之种树问题
- JavaScript小应用
- kvm配置桥接网卡
- 【Objective-C编程】深入浅出字符串NSString
- 常用工具类
- Swift学习之路01-基础类型
- close 和shutdown 函数
- C++类访问控制--public,protected,private的使用(未完)
- 创建mini Linux
- poj 1321:棋盘问题
- oracle 创建用户
- 数据List刷新UI的Items显示(比如服务器给客户端刷新好友列表) 方法(1)
- CSS3实现倒计时
- WebService