传送门:http://poj.org/problem?id=2362

题目大意:

给一些不同长度的棍棒,问是否可能组成正方形。

学习了写得很好的dfs

赶紧去玩博饼了。。。。。晚上三个地方有约。。。。。T T分身乏术啊。。。。

#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=22;
int side[MAXN],target,n;
bool vis[MAXN];
bool dfs(int num,int cur_len,int begin)
{
if(num==3) //如果3条可以构建完成,那么第4条必然可以
return true; for(int i=begin;i<n;i++)
{
if(vis[i]==true)
continue; vis[i]=true;
if(side[i]+ cur_len< target)
{
if(dfs(num,side[i]+cur_len,i)) //继续构建
return true;
} if(side[i]+ cur_len== target)
{
if(dfs(num+1,0,0)) //新的一条边
return true;
} vis[i]=false;
} return false;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int sum=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&side[i]);
sum+=side[i];
vis[i]=false;
} if(sum%4!=0||n<4) //和不被4整除,意味着不能组成4条边。
{
printf("no\n");
continue;
} sort(side,side+n); target=sum/4;
if(target < side[0]) //最小的一遍比要组成的边长。。。。。
{
printf("no\n");
continue;
} if(dfs(0,0,0))
printf("yes\n");
else
printf("no\n"); }
}

POJ 2362 Square DFS的更多相关文章

  1. DFS POJ 2362 Square

    题目传送门 /* DFS:问能否用小棍子组成一个正方形 剪枝有3:长的不灵活,先考虑:若根本构不成正方形,直接no:若第一根比边长长,no 这题是POJ_1011的精简版:) */ #include ...

  2. POJ 2362 Square

    题意:给n个木棍,问能不能正好拼成一个正方形. 解法:POJ1011的简单版……不需要太多剪枝……随便剪一剪就好了……但是各种写屎来着QAQ 代码: #include<stdio.h> # ...

  3. POJ.3172 Scales (DFS)

    POJ.3172 Scales (DFS) 题意分析 一开始没看数据范围,上来直接01背包写的.RE后看数据范围吓死了.然后写了个2^1000的DFS,妥妥的T. 后来想到了预处理前缀和的方法.细节以 ...

  4. POJ 2362:Square 觉得这才算深度搜索

    Square Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 21821   Accepted: 7624 Descripti ...

  5. poj 2362:square

    题目大意:给你T组数据,每组数据有n个棍子,问你能不能用这些棍子拼成一个正方形(所有都要用上,而且不能截断棍子). Sample Input 34 1 1 1 15 10 20 30 40 508 1 ...

  6. ACM : POJ 2676 SudoKu DFS - 数独

    SudoKu Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu POJ 2676 Descr ...

  7. poj 1816 (Trie + dfs)

    题目链接:http://poj.org/problem?id=1816 思路:建好一颗Trie树,由于给定的模式串可能会重复,在原来定义的结构体中需要增加一个vector用来记录那些以该节点为结尾的字 ...

  8. HDU1518 Square(DFS,剪枝是关键呀)

    Square Time Limit : 10000/5000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submi ...

  9. POJ 1564 经典dfs

    1.POJ 1564 Sum It Up 2.总结: 题意:在n个数里输出所有相加为t的情况. #include<iostream> #include<cstring> #in ...

随机推荐

  1. 再谈怎样以最简单的方法将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式

    今天review代码,看见某些大爷在将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式时仍然仅仅顾结果不注重过程,"大爷"咱能负点责任吗? 将泛型为St ...

  2. POJ 3039 搜索??? (逼近)

    思路: 抄的题解 这叫搜索? 难以理解 我觉得就是枚举+逼近 //By SiriusRen #include <cmath> #include <cstdio> #includ ...

  3. javafx progressbar

    import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans ...

  4. chattr---文件隐藏属性

  5. flask_wtf flask 的 CSRF 源代码初研究

    因为要搞一个基于flask的前后端分离的个人网站,所以需要研究下flask的csrf防护原理. 用的扩展是flask_wtf,也算是比较官方的扩展库了. 先上相关源代码: def validate_c ...

  6. mysql允许外部连接设置

    错误信息: SQL Error (1130): Host ‘192.168.1.88’ is not allowed to connect to this MySQL server 说明所连接的用户帐 ...

  7. PLSQL乱码&TNS-12557: protocol adapter not loadable解决

    PLSQL乱码&TNS-12557: protocol adapter not loadable解决 PLSQL乱码&TNS-12557: protocol adapter not l ...

  8. UVA 10306 e-Coins(全然背包: 二维限制条件)

    UVA 10306 e-Coins(全然背包: 二维限制条件) option=com_onlinejudge&Itemid=8&page=show_problem&proble ...

  9. 将字符串使用md5加密

    >>> import md5 >>> md5.md5('123').hexdigest() '202cb962ac59075b964b07152d234b70' & ...

  10. 设计模式(7)-结构型模式-Bridge模式

    2.结构性模式 2.2  BRIDGE模式 别名:handle/body 这个模式体现了组合相对于继承的优势. 2.2.1动机 当一个抽象可能有多个实现时,通经常使用继承来协调它们.抽象类定义对该抽象 ...