hdu 1016 Prime Ring Problem(深度优先搜索)
2016-02-01 12:01
351 查看
Prime Ring Problem
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12105 Accepted Submission(s): 5497[align=left]Problem Description[/align]
A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., n into each circle separately, and the sum of numbers in two adjacent circles should be a prime.
Note: the number of first circle should always be 1.
#include<iostream> #include<cstring> #define N 25 #define M 40 using namespace std; bool is_prime[M],visited ; int n,test,ans ; void work(int k) { int i; if(k==n+1) { if(!is_prime[ans +ans[1]]) return ; for(i=1;i<=n-1;i++) cout<<ans[i]<<" "; cout<<ans[i]<<endl; return ; } for(i=2;i<=n;i++) { if(!visited[i]&&is_prime[ans[k-1]+i]) { visited[i]=true; ans[k]=i; work(k+1); visited[i]=false; } } } bool prime(int n) { if(n==1) return false; if(n==2||n==3) return true; int i; for(i=2;i<n;i++) if(n%i==0) return false; return true; } int main() { int i;test=1; for(i=1;i<M;i++) is_prime[i]=prime(i); while(cin>>n) { ans[1]=1; memset(visited,false,sizeof(visited)); cout<<"Case "<<test<<":"<<endl; work(2); test++; cout<<endl; } return 0; }
View Code
相关文章推荐
- javascript实现右侧弹出“分享到”窗口效果
- 8步拥有免费QQ域名邮箱
- 【JavaSE】JavaSE基础知识巡回
- BLE-NRF51822教程8-动态广播
- 文本分析之数据收集
- QTableWidget 导出到表格
- 安卓开发——浮动上下文选项与上下文菜单栏的实现
- Gradle实现的两种简单的多渠道打包方法
- VM虚拟机下CentOS 6.5配置IP地址的三种方法
- 实例详解IOS开发之UIWebView
- win7笔记本双屏显示设置问题
- Maven聚合
- 多线程(一)NSThread
- 0201 ---背景 tableview
- web跨页弹窗选值
- 使用UE4发布安卓平台游戏
- 搜索过的问题集合(主要是Ext.js5)
- oauth2.0 认证和授权过程
- 面向对象语言学习
- JSTL---JSP标准标签库技术