[HAOI2004模拟] 数列问题
来源:互联网 发布:锁定windows快捷键 编辑:程序博客网 时间:2024/04/29 08:47
66. [HAOI2004模拟] 数列问题
★☆ 输入文件:dfs3.in
输出文件:dfs3.out
简单对比时间限制:1 s 内存限制:128 MB
问题描述
试编程将 1 至 N ( N ≤ 15 )的自然数序列 1 , 2 , … , N 重新排列,使任意相邻两数之和为素数。例如 N=3 时有两种排列方案 123 、 321 满足要求。
【输入格式】
输入文件:dfs3.in
第一行:一个整数n(1<=n<=15)
【输出格式】
输出文件:dfs3.out
输出若干行,每行为一种排列方案(排列方案按字典序排列, 相邻数字之间用空格分隔) ),最后一行输出排列方案总数。
【输入样例】
输入文件名:dfs3.in
3
输出文件名:dfs3.out
1 2 3
3 2 1
2
简单搜索。
#include<cstdio>#include<cmath>using namespace std;int n,ans;bool vis[20];int a[20];bool prim[50];void get_prim(){ int i,j; for(i=2;i<=30;i++){ for(j=2;j<=sqrt(i);j++) if(i%j==0) break; if(j>sqrt(i)){ prim[i]=true; } }}void dfs(int cur,int last){ if(cur==n+1){ ans++; for(int i=1;i<n;i++) printf("%d ",a[i]); printf("%d\n",a[n]); return ; } for(int i=1;i<=n;i++){ if(!vis[i]&&prim[last+i]==true){ a[cur]=i; vis[i]=true; dfs(cur+1,i); vis[i]=false; } }}int main(){ freopen("dfs3.in","r",stdin); freopen("dfs3.out","w",stdout); get_prim(); scanf("%d",&n); for(int i=1;i<=n;i++){ vis[i]=true; a[1]=i; dfs(2,i); vis[i]=false; } printf("%d\n",ans); return 0;}
- [HAOI2004模拟] 数列问题
- ACM 66. [HAOI2004模拟] 数列问题(水dfs)
- [HAOI2004] 数列 - 树状数组
- 2014.5.31模拟赛【某种数列问题】
- 【NOIP模拟赛】某种数列问题
- 模拟赛 数列
- 【noip模拟题】数列
- 【NOIP模拟】数列编辑器
- 【NOIP模拟赛】数列
- NOIp模拟 数列
- 【GDOI2018模拟9.21】数列
- 【GDOI2018模拟9.21】数列
- [NOIP2017模拟]数列求和
- 数列问题
- 数列问题
- 数列问题
- 【金凌模拟试题】:数列
- 模拟赛 数列的期望
- 使用C#打开新窗口关闭旧窗口的方法;winform中防止重复打开多个相同子窗体
- 转:Adaboost介绍
- 转:浅谈OpenCV人脸检测
- php分组循环
- 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
- [HAOI2004模拟] 数列问题
- 韩媒称韩国海警用橡皮弹打死1名中国船员
- 如何对网页内容进行合理的分块分析
- 想要提高java的性能需要注意的这些事
- cvc-complex-type.2.4.c 如何解决
- 已知树的前序遍历和中序遍历,求后序遍历的方法(转)
- 谈谈"基于策略编程"的看法,以及concept、aop
- Window.Open参数详解[转]
- 转:经典的KNN算法解释