题意:给出n个(不同长度的)棍子,问能不能将他们构成一个正方形。

策略:深搜。

hdoj 1455的简化版

代码:

#include <stdio.h>
#include <string.h>
#include <algorithm>
#define M 25
using namespace std;
int s[M], n, ans;//ans就是答案
bool vis[M];
int dfs(int cou, int cur, int pos){ //cou是已分配的木棍数,cur是当前的长度, pos是当前的序号
if(cou == n){
return 1;
}
int i;
for(i = pos; i < n; i ++){
if(vis[i]) continue;
if(cur+s[i] < ans){
vis[i] = 1;
if(dfs(cou+1, cur+s[i], i+1)) return 1;
vis[i] = 0;
if(cur == 0) return 0;
while(s[i] == s[i+1]&&i+1<n) ++i;
}
else if(cur+s[i] == ans){
vis[i] = 1;
if(dfs(cou+1, 0, 0)) return 1;
vis[i] = 0;
return 0;
}
}
return 0;
}
int main(){
int t, i;
scanf("%d", &t);
while(t --){
int sum = 0;
scanf("%d", &n);
for(i = 0; i < n; i ++){
scanf("%d", &s[i]);
sum+=s[i];
}
if(sum%4){ //假设能,肯定能整除4
printf("no\n");
continue;
}
ans = sum/4;
memset(vis, 0, sizeof(vis));
int flag = dfs(0, 0, 0);
printf("%s\n", flag? "yes":"no");
}
return 0;
}

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058



hdoj 1518 Square 【dfs】的更多相关文章

  1. hdoj 1455 Sticks 【dfs】

    题意:找最短的木棍可以组成的长度, hdoj  1518 的加强版 代码: #include <stdio.h> #include <string.h> #include &l ...

  2. hdoj 1342 Lotto【dfs】

    Lotto Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  3. HDOJ 1501 Zipper 【DP】【DFS+剪枝】

    HDOJ 1501 Zipper [DP][DFS+剪枝] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...

  4. 【第40套模拟题】【noip2011_mayan】解题报告【map】【数论】【dfs】

    目录:1.潜伏者 [map] 2.Hankson的趣味题[数论]3.mayan游戏[dfs] 题目: 1. 潜伏者(spy.pas/c/cpp)[问题描述]R 国和S 国正陷入战火之中,双方都互派间谍 ...

  5. Kattis - glitchbot 【DFS】

    Kattis - glitchbot [DFS] 题意 有一个机器人 刚开始在(0, 0),然后给出一个目标点,并且会给出一系列指令,但是其中会有一个指令是错误的.我们需要找出那个指令,并且改成正确的 ...

  6. HDU 6113 度度熊的01世界 【DFS】(2017"百度之星"程序设计大赛 - 初赛(A))

    度度熊的01世界 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  7. 【dfs】P1331 海战

    题目描述 在峰会期间,武装部队得处于高度戒备.警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机.此外,巡洋船只和舰队将被派去保护海岸线.不幸的是因为种种原因,国防海军部仅有很少的几 ...

  8. 【dfs】p1731 生日蛋糕

    1441:[例题2]生日蛋搞 [题目描述] 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体.设从下往上数第i(1≤i≤M)层蛋糕是半径为Ri, 高 ...

  9. 【dfs】LETTERS

    1212:LETTERS [题目描述] 给出一个roe×colroe×col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母.问最多可以经过几个字母. [ ...

随机推荐

  1. css3 选择器 权重问题 (第二部分)

    这篇博文有关css的权重问题,我个人认为这是css知识中很重要的一个知识点.因为在开发的过程能中我们会经常遇到这种问题,特别是如果你使用框架的时候,有些框架的某些标签有一些默认的样式.所以我们可以通过 ...

  2. alipay.trade.refund (统一收单交易退款接口)[支付宝退款]

    首页官网退款的api: https://doc.open.alipay.com/docs/api.htm?spm=a219a.7395905.0.0.UTBitT&docType=4& ...

  3. Laravel5.1 学习笔记2, 路由

    安装的说明请看文档, laravel 安装 #基本路由 你将在 app/Http/routes.php 文件定义大部分路由, 这些路由将被App\Providers\RouteServiceProvi ...

  4. VMWare 安装Centos 6.9

    1.新建虚拟机 (1)点击文件-->新建虚拟机 (2)选择 自定义(高级)--> 下一步 (3)选择Workstation 12.0 --> 下一步 (4)选择 稍后安装操作系统 - ...

  5. 【PostgreSQL-9.6.3】表操作语句

    1.创建数据表 create table table_name ( 字段1 数据类型[列级别约束条件][默认值], 字段2 数据类型[列级别约束条件][默认值], 字段3 数据类型[列级别约束条件][ ...

  6. jQuery的基本概念与高级编程

    年创建的一个年月面世的1.5.2版本.作为一个JavaScript库,jQuery极大程度上解决了浏览器的兼容性问题,能够在IE 6.0 +.FF 2.0 +.Safari 3.0 +.Opera 9 ...

  7. [转]VIM字符替换

    语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为::%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行. 如:"1,20" ...

  8. veket智能机器人

    官方网站:http://www.lucky8k.com/forum.php veket儿童操作系统 希望工具超过小puppy linux系统 一个还在发展中的linux系统: Slax Linux : ...

  9. struts与spring整合

    Spring与Struts框架整合 Spring,负责对象对象创建 Struts, 用Action处理请求 Spring与Struts框架整合, 关键点:让struts框架action对象的创建,交给 ...

  10. case when用法小结

    case 对比字段 when 值 then 输出结果 when 值 then 输出结果 ....else 输出结果 end 对比字段可以不在case后面确定 可以把条件直接写在when后面,如果对比字 ...