HDU 1016Presentation Error
这是一道典型的DFS题目。幻想有n个箱子,每次都向箱子里扔一个数,(当然第一个是必定是1,因为题目要求按字典序输出)。判断输出的条件就是,当我移动到第n+1个箱子的时候,就要return了,当然还要判断是否能输出。。怎么判断能否输出呢?题目说:组成一个圈子,a[j]+a[j+1]都必须是质数。但是,如果我们在n+1的时候再判断这个,已经很迟了,递归次数太多了。所以,应该是当满足这个条件,我才递归。
当然,a[1]+a[n]是需要在输出的时候判定的
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int n;
int book[30];
int a[30];
int prime[45];
int case_time;
void dfs(int step)
{
if (step == n+1)//是否return
{
if (prime[a[1]+a[n]])//判断是否能输出
{
int i;
for (i=1;i<n;i++)
{
//printf ("%d ",a[i]); presensation error
//注意这样输出会结尾的时候多一个空格
printf ("%d ",a[i]);
}
printf ("%d\n",a[n]);
}
return ;
}
else
{
int i;
for (i=1;i<=n;i++)
{
if (book[i]==0&&prime[i+a[step-1]])
{
a[step]=i;
book[i]=1;
dfs(step+1);
book[i]=0;
}
}
return ;
}
}
int main()
{
prime[2]=1;
prime[3]=1;
prime[5]=1;
prime[7]=1;
prime[11]=1;
prime[13]=1;
prime[17]=1;
prime[19]=1; //prime[21]=1; 21不是质数。。。原谅我error了
prime[23]=1;
prime[27]=1;
prime[29]=1;
prime[31]=1;
prime[37]=1;
//n<20 19+19 起码打到40的表
while (scanf ("%d",&n)!=EOF)
{
case_time++;
memset(book,0,sizeof(book));
//printf ("Case %d:\n",case_time);
printf("Case %d:\n",case_time);
a[1]=1;
book[1]=1;
dfs(2);
printf ("\n");
}
//system("pause");
return 0;
}
我觉得注意的就是多了一个空格那里,实在太坑
HDU 1016Presentation Error的更多相关文章
- nyoj 1029/hdu 3714 Error Curves 三分
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3714 懂了三分思想和F(x)函数的单调性质,这题也就是水题了 #include "stdio ...
- hdu 3714 Error Curves(三分)
http://acm.hdu.edu.cn/showproblem.php?pid=3714 [题意]: 题目意思看了很久很久,简单地说就是给你n个二次函数,定义域为[0,1000], 求x在定义域中 ...
- LA 5009 (HDU 3714) Error Curves (三分)
Error Curves Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu SubmitStatusPr ...
- hdu 3714 Error Curves(三分)
Error Curves Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tot ...
- HDU 3714 Error Curves
Error Curves 思路:这个题的思路和上一个题的思路一样,但是这个题目卡精度,要在计算时,卡到1e-9. #include<cstdio> #include<cstring& ...
- Error Curves HDU - 3714
Josephina is a clever girl and addicted to Machine Learning recently. She pays much attention to a m ...
- HDU 3714/UVA1476 Error Curves
Error Curves Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- HDU 2087 KMP模板题
1.HDU 2087 2.题意:一个主串,一个子串,求子串在主串里出现了几次. 3.总结:看了题解,还是不太懂.. //#include<iostream>#include<cmat ...
- HDU——PKU题目分类
HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 ...
随机推荐
- Linux 组的管理
一.Linux组基本介绍 在Linux中每个用户必须属于一个组,不能独立于组外.在Linux中每个文件有所有者,所在组,其他组的概念 1)所有者 2)所在组 3)其他组 4)改变用户的所在组 二.文件 ...
- (一)Sql学习之sql语言的组成
SQL语言是具有强大查询功能的数据库结构化语言.由以下几部分组成: 1.数据定义类SQL(DDL--DATE DEFINITION LANGUAGE) CREATE-创建数据库及其对象(表,索引,视图 ...
- 解决 screen 连接不上,提示“There is no screen to be resumed matching 18352.” 的问题
当你挂起screen,下次想重新连上screen时,有时会出现screen session的状态为Attached但是却连不上的情况,比如我想重新进入session id 为18352的screen, ...
- gisoracle做windows界面
import tkinter as tk from tkinter import messagebox # 设置窗口居中 def window_info(): ws = window.winfo_sc ...
- [XLua]热更新四部曲视频教程+示例源码
基于Unity2017 xLua是由腾讯维护的一个开源项目,xLua为Unity. .Net. Mono等C#环境增加Lua脚本编程的能力,借助xLua,这些Lua代码可以方便的和C#相互调用.自20 ...
- 006-guava 集合-集合工具类-集合扩展工具类
一.概述 需要实现自己的集合扩展.也许你想要在元素被添加到列表时增加特定的行为,或者你想实现一个Iterable,其底层实际上是遍历数据库查询的结果集 二.使用 2.1.ForwardingList装 ...
- zookeeper在windows的常用命令
首先简要讲下安装 安装jdk 安装Zookeeper. 在官网http://zookeeper.apache.org/下载zookeeper.我下载的是zookeeper-3.4.6版本. 解压zoo ...
- error C1002: 在第 2 遍中编译器的堆空间不足
error C1002: 在第 2 遍中编译器的堆空间不足 fatal error C1083: Not enough space 打开VS2015 x64 x86 兼容工具命令提示符,在此命令行中再 ...
- ES6深入浅出-10 ES6新增的数据类型-1.Symbol与隐藏属性
ES5现有的数据类型.7种数据类型. 新的类型是属于Object 最普通的类型.plain object 数组array 函数function 下面这些都属于Object类型. 今天要讲的 set类型 ...
- 【swoole】PHP+Swoole+Linux实现进程监控
脚本代码 class Server { const PORT = 8888; public function port() { //netstat -anp 2>/dev/null| grep ...