Prime Ring Problem(HDU1016)(A)
来源:互联网 发布:tf卡数据恢复 编辑:程序博客网 时间:2024/06/06 01:20
どこでもドア:http://acm.hdu.edu.cn/showproblem.php?pid=1016
一个环放从1到n的n个数,第一个位置一定放1。剩下的满足与之前的数相加为素数,输出所有情况。注意是环,首尾也要合法。
AC CODE:
#include<iostream>#include<cstdio>#include<algorithm>#include <cmath>#include <cstring>#include <string>#include<sstream>#include<set>#include <cstdlib>#include<map>using namespace std;const int M=32;int n,ma[M],cnt,ans[M];int pri[12]={3,5,7,11,13,17,19,23,29,31,37,39};//数据范围小,所有和的素数直接写出来了。int K=1;bool check(int x,int y) //检验和是否是素数{ x+=y; for(int i=0;i<12;i++){ if(pri[i]==x) return 1; } return 0;}void DFS(int x){ if(cnt>=n) //cnt记录了放入了几个数,全合法放入后return {//ans记录了对应位置放入的数字 if(check(ans[n-1],1)){ cout<<ans[0]; for(int i=1;i<n;i++) cout<<" "<<ans[i]; cout<<endl; } return ; } else { for(int i=1;i<=n;i++) { if(check(i, x)&&!ma[i])//ma来记录访问的状态 { ma[i]=1; ans[cnt]=i; cnt++; DFS(i); //搜索后回溯到这个节点要还原访问之前的状态 ma[i]=0; cnt--; } } } return ;}int main(){ while(cin>>n) { cout<<"Case "<<K++<<":"<<endl; memset(ma,0,sizeof(ma)); cnt=1; ans[0]=1; ma[1]=1; DFS(1); cout<<endl; } return 0;}
0 0
- Prime Ring Problem(HDU1016)(A)
- HDU1016 Prime Ring Problem
- hdu1016 Prime Ring Problem
- hdu1016-Prime Ring Problem
- HDU1016 Prime Ring Problem
- hdu1016 Prime Ring Problem
- hdu1016 Prime Ring Problem
- HDU1016-Prime Ring Problem
- HDU1016 Prime Ring Problem
- HDU1016 Prime Ring Problem
- hdu1016 Prime Ring Problem
- HDU1016 Prime Ring Problem
- [HDU1016]Prime Ring Problem
- hdu1016 Prime Ring Problem
- HDU1016 Prime Ring Problem
- hdu1016 Prime Ring Problem
- hdu1016 Prime Ring Problem
- hdu1016:Prime Ring Problem
- HTML5的初级属性
- 和差化积&积化和差
- Spring mvc入门程序
- javaScript 之navigator
- isset()和empty()的区别
- Prime Ring Problem(HDU1016)(A)
- 国庆训练赛
- 字符串替换
- C Primer Plus学习 十二 使用嵌套if显示一个数的约数
- maven 分模块 分工程构建项目
- Lua语言入门(四)
- Android开发中高效的数据结构用SparseArray代替HashMap
- 第五周项目(9)斐波那契数
- 屋顶打字通(二)--DrawString和MeasureString