zoukankan      html  css  js  c++  java
  • hdu1518深搜DFS

    看队友ac了这个。。加上很久没写过深搜了。。手痒了。。遂拿之解闷~~

    一开始超时。。玩命的超时(这次用的printf了)。。查之发现二逼了代码在已经搜过的位置重复搜了几次。。导致代码目测时间复杂度为o(n!)。。玩命啊。。改之。。wa。。顿时想起以前做过之一题目。。即在搜索过程中搜不成功还得回溯。。遂改方法。。ac~

    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int MAXM=22;
    int m;
    int num[MAXM];
    bool vis[MAXM];
    bool cmp(int a,int b)
    {
        return a>b;
    }
    bool dfs(int remd,int pos,int count,int len)
    {
        int i;
        if(count==4)
        {
            return 1;
        }
        
        for(i=pos;i<=m-1;i++)
        {
            if((!vis[i])&&remd>=num[i])
            {
                vis[i]=1;
                remd=remd-num[i];
                if(remd==0&&dfs(len,0,count+1,len))
                {
                    return 1;
                }else if(dfs(remd,i+1,count,len))
                {
                    return 1;
                }
                remd=remd+num[i];
                vis[i]=0;
            }
        }
        return 0;
    }
    
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            int i;
            memset(vis,0,sizeof(vis));
            int sum=0;
            scanf("%d",&m);
            for(i=0;i<=m-1;i++)
            {
                scanf("%d",&num[i]);
                sum+=num[i];
            }
            if(sum%4)
            {
                printf("no\n");
                continue;
            }
            sort(num,num+m,cmp);
            if(sum/4<num[0])
            {
                printf("no\n");
                continue;
            }
            if(dfs(sum/4,0,0,sum/4))
            {
                printf("yes\n");
            }else
            {
                printf("no\n");
            }
            
        }
        return 0;
    }
    

      

    本博客(http://www.cnblogs.com/cj695/)未标明转载的内容均为本站原创,非商业用途转载时请署名(77695)并注明来源(http://www.cnblogs.com/cj695/)。商业用途请联系作者(77695) QQ:646710030。作者(77695)保留本博客所有内容的一切权利。
    独立博客:http://nfeng.cc/
  • 相关阅读:
    【POJ
    【POJ
    【POJ
    【POJ
    【POJ
    【POJ
    【POJ
    【POJ
    NAT
    OSPF与ACL综合实验
  • 原文地址:https://www.cnblogs.com/cj695/p/2620258.html
Copyright © 2011-2022 走看看