博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
COGS——C66. [HAOI2004模拟] 数列问题
阅读量:4349 次
发布时间:2019-06-07

本文共 1314 字,大约阅读时间需要 4 分钟。

★☆   输入文件: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

 

1 #include 
2 #include
3 4 using namespace std; 5 6 int n,ans,a[55]; 7 int prim[55],use[55]; 8 void Prim() 9 {10 for(int i=1;i<=(n<<1);i++)11 {12 prim[i]=1;13 for(int j=2;j*j<=i;j++)14 if(i%j==0)15 {16 prim[i]=0;17 break;18 }19 }20 }21 22 void DFS(int cnt)23 {24 if(cnt==n+1)25 {26 ans++;27 for(int i=1;i<=n;i++)28 printf("%d ",a[i]);29 printf("\n");30 return ;31 }32 for(int i=1;i<=n;i++)33 {34 if(use[i]) continue;35 if(!prim[a[cnt-1]+i]&&cnt>1) continue;36 use[i]=1; a[cnt]=i;37 DFS(cnt+1);38 use[i]=0;39 }40 }41 42 int main()43 {44 freopen("dfs3.in","r",stdin);45 freopen("dfs3.out","w",stdout);46 scanf("%d",&n);47 Prim(); DFS(1);48 printf("%d",ans);49 return 0;50 }

 

转载于:https://www.cnblogs.com/Shy-key/p/7189864.html

你可能感兴趣的文章
.htaccess to httpd.conf
查看>>
hadoop中常见元素的解释
查看>>
4-4 修改文件
查看>>
条件注释判断浏览器版本<!--[if lt IE 9]>
查看>>
Comparison among several SGD derivation
查看>>
samba 配置参数详解
查看>>
mvn install selenium依赖包
查看>>
关于SQL的相关笔记【长期更新,只发一帖】
查看>>
手把手玩转win8开发系列课程(11)
查看>>
交换两个整形变量的数值
查看>>
Linux----常用操作
查看>>
sequence
查看>>
Delphi错误:Stack overflow的解决方法
查看>>
取消chrome(谷歌浏览器)浏览器下最小字体限制
查看>>
模板方法模式
查看>>
什么是ECC内存?
查看>>
使用Visual Studio 2013进行UI自动化测试
查看>>
13-集体照
查看>>
读了曾国藩家书,,心态逐渐平和起来。搞技术的如果缺乏信念的指引,生活会很乏味无聊!...
查看>>
前端javascript 错误 Uncaught SyntaxError: Unexpected token ILLEGAL
查看>>