zoukankan      html  css  js  c++  java
  • hdu 1518 又一道搜索经典

    刚刚做过hdu 1455那道搜索题,在来做这道,那就像切菜一样。。。,orz,让我这种若菜也体验了一把切题的乐趣。。。。

    好吧,还是说一下大意吧。。。这次是为正方形了。。。就是所有的木棒从头到尾相连,判断能否组成一个正方形。。。搜索过程没有像1455那题有那么多的剪枝

    。。。orz,我是直接暴力的。。。还是上代码吧。。。

     1 #include<iostream>
     2 #include<algorithm>
     3 using namespace std;
     4 
     5 struct stick{
     6     int length;   //长度
     7     int mark;    //标记是够被使用过
     8 };
     9 stick sticks[21];
    10 int n,len;
    11 
    12 int cmp(const stick &s1,const stick &s2){
    13     return s1.length>s2.length;
    14 }
    15 //len为所围成的正方形的边长,l为当前木棒的长度
    16 int dfs(int len,int l,int count,int pos){
    17     if(count==4)return 1;
    18     for(int i=pos;i<n;i++){
    19         if(sticks[i].mark)continue;
    20         //找到了相等的
    21         if(len==(l+sticks[i].length)){
    22             sticks[i].mark=1;
    23             if(dfs(len,0,count+1,0))return 1;
    24             sticks[i].mark=0;
    25         }else if(len>(l+sticks[i].length)){
    26             sticks[i].mark=1;
    27             l+=sticks[i].length;
    28             if(dfs(len,l,count,i+1))return 1;
    29             l-=sticks[i].length;  //不符合的话要恢复原长
    30             sticks[i].mark=0;
    31         }
    32     }
    33     return 0;
    34 }
    35 
    36 int main(){
    37     int t;
    38     scanf("%d",&t);
    39     while(t--){
    40         scanf("%d",&n);
    41         len=0;
    42         for(int i=0;i<n;i++){
    43             scanf("%d",&sticks[i].length);
    44             len+=sticks[i].length;
    45             sticks[i].mark=0;
    46         }
    47         //不是4的倍数的以及木棒的根数少于4的都不能
    48         if(len%4||n<4){
    49             printf("no\n");
    50             continue;
    51         }
    52         len/=4;
    53         sort(sticks,sticks+n,cmp);
    54         if(dfs(len,0,0,0)){
    55             printf("yes\n");
    56         }else 
    57             printf("no\n");
    58     }
    59     return 0;
    60 }
  • 相关阅读:
    Mysql模糊查询like效率,以及更高效的写法(转)
    补全数组缺失某种类型的数据方法
    php 判断两个数组是否相等
    query如何全选或不全选时,不操作已经禁用的checkbox
    css talbe中td溢出隐藏 div溢出隐藏
    MongoDb的安装
    PSR规范
    shell中各种括号的作用()、(())、[]、[[]]、{}
    mysql explain执行计划详解
    PHP "延迟静态绑定" 功能,static
  • 原文地址:https://www.cnblogs.com/wally/p/2880251.html
Copyright © 2011-2022 走看看