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<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,tot;
int num[],vis[],yes[30];
void judge(){
yes[]=;yes[]=;yes[]=;
yes[]=;yes[]=;yes[]=;
yes[]=;yes[]=;yes[]=;yes[]=;
}
void dfs(int pos){
if(pos==n+){
for(int i=;i<n;i++)
if(yes[num[i]+num[i+]]==) return;
tot++;
for(int i=;i<=n;i++) cout<<num[i]<<" ";
cout<<endl;
}
for(int i=;i<=n;i++)
if(!vis[i]){
vis[i]=;
num[pos]=i;
dfs(pos+);
vis[i]=;
}
}
int main(){
freopen("dfs3.in","r",stdin);
freopen("dfs3.out","w",stdout);
scanf("%d",&n);
judge();dfs();
cout<<tot;
}

优化

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,tot;
int num[],vis[],yes[];
void judge(){
yes[]=;yes[]=;yes[]=;
yes[]=;yes[]=;yes[]=;
yes[]=;yes[]=;yes[]=;yes[]=;
}
void dfs(int pos){
if(pos==n+){
tot++;
for(int i=;i<=n;i++) cout<<num[i]<<" ";
cout<<endl;
return ;
}
for(int i=;i<=n;i++)
if(!vis[i]&&(yes[i+num[pos-]]||pos==)){
vis[i]=;
num[pos]=i;
dfs(pos+);
vis[i]=;
}
}
int main(){
freopen("dfs3.in","r",stdin);
freopen("dfs3.out","w",stdout);
scanf("%d",&n);
judge();dfs();
cout<<tot;
}

cogs 66. [HAOI2004模拟] 数列问题的更多相关文章

  1. cogs——66. [HAOI2004模拟] 数列问题

    66. [HAOI2004模拟] 数列问题 本以为会TLE,可... dfs水题(很基础) #include<bits/stdc++.h> using namespace std; ],a ...

  2. COGS——C66. [HAOI2004模拟] 数列问题

    http://www.cogs.pro/cogs/problem/problem.php?pid=66 ★☆   输入文件:dfs3.in   输出文件:dfs3.out   简单对比 时间限制:1 ...

  3. 数据结构(Splay平衡树):COGS 339. [NOI2005] 维护数列

    339. [NOI2005] 维护数列 时间限制:3 s   内存限制:256 MB [问题描述] 请写一个程序,要求维护一个数列,支持以下 6 种操作:(请注意,格式栏 中的下划线‘ _ ’表示实际 ...

  4. cogs 2632. [HZOI 2016] 数列操作d

    2632. [HZOI 2016] 数列操作d ★★★   输入文件:segment.in   输出文件:segment.out   简单对比时间限制:3 s   内存限制:512 MB [题目描述] ...

  5. COGS 2633. [HZOI 2016] 数列操作e

    [题目描述] 一个长度为n的序列,一开始序列数的权值都是0,有m次操作 支持两种操作, 1 L R x,给区间[L,R]内,第一个数加x,第二个数加2^2⋅x,第三个数加3^2⋅x...第R-L+1个 ...

  6. 【2016北京集训测试赛(八)】 crash的数列 (思考题)

    Description 题解 题目说这是一个具有神奇特性的数列!这句话是非常有用的因为我们发现,如果套着这个数列的定义再从原数列引出一个新数列,它居然还是一样的...... 于是我们就想到了能不能用多 ...

  7. 「Luogu P2201」数列编辑器 解题报告

    数列编辑器,在线IDE 本期的主题是洛谷的在线IDE 小学生?!小学生虐我

  8. MySQL全面瓦解22:索引的介绍和原理分析

    索引的定义 MySQL官方对索引的定义为:索引(Index)是协助MySQL高效获取数据的数据结构. 本质上,索引的目的是为了提高查询效率,通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时 ...

  9. UI自动化测试:App的WebView页面中,当搜索栏无搜索按钮时处理方法

    一.遇到的问题 在做移动端的UI自动化测试时,经常会遇到上图所示的搜索框,这里有个麻烦就是搜索框没有"搜索"按钮,UI自动化测试时不能确认搜索. 要解决这个问题,我们可以通过 dr ...

随机推荐

  1. linux下php开启pdo扩展

    前提:网页报错 为解决问题:Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' 解决方案 : 下载安装PHP_MYSQL扩展 wget http:// ...

  2. Java.io.ObjectOutputStream.writeObject()方法实例

    java.io.ObjectOutputStream.writeObject(Object obj) 方法将指定对象写入ObjectOutputStream.该对象的类,类的签名,以及类及其所有超类型 ...

  3. Proc datasets

    作用:控制数据集.Datasets 过程运行结果不输出,结果只有在日志里才能看到. 基本语法: proc datasets lib=work; quit; 用法: 1. 更改数据集 proc data ...

  4. h5混编问题总结

    h5混编总结: 1.fragment 格式错误导致跳转混乱的问题:修改格式: 2.有缓存回退js不执行问题:未解决: 3.无缓存跨域回退白屏问题:解决跨域问题. 4.

  5. jquery 点击切换div

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. mathAge.call(btn) 函数call 改变函数内 this #js

    mathAge.call(btn) 函数call 改变函数内 this

  7. CAD交互绘制直线(com接口)

    用户可以在控件视区任意位置绘制直线. 主要用到函数说明: _DMxDrawX::DrawLine 绘制一个直线.详细说明如下: 参数 说明 DOUBLE dX1 直线的开始点x坐标 DOUBLE dY ...

  8. Vue打包之后部署到 express 服务器上

    Part.1 安装 express npm install express body-parer --save Part.2 在项目根目录下创建 app.js 文件作为启动 express 服务器代码 ...

  9. LPCTSTR 字符串获取其长度

    LPCTSTR lpStr = "123456789";int i=CString(lpStr).GetLength();

  10. Webstorm 的 Tab 键调整缩进值

    两步即可,注意版本