zoukankan      html  css  js  c++  java
  • 数据结构之dfs

    dfs:

    注意的小问题,如果是多路径的话,一次memset(vis,o,sizeof(vis))如果跟步骤有关要申请一个全局变量

    理解栈与递归

     hdu  1518
    数据拼正方形;
    思路:就是排序,首先可以剪枝,就是sum%4!=0的,有个小的处理就是先求出sum/4;
    #include <iostream>
    #include <algorithm>
    using namespace std;
    bool cmp(int a,int b)
    {
        return a>b?true:false;
    }
    int s[21];
    bool used[21];
    int N,target,sum;

    int dfs(int curs,int curl,int pos)
    {
        if(curs==3)//这里的小处理就比较巧了,因为sum是整除4的
           return 1;
        for(int i=pos;i<N;i++)
        {
            if(used[i]==true)
                continue;
            if(curl+s[i]==target)
            {
                used[i]=true;
                if(dfs(curs+1,0,0)==true)
                    return true;
                used[i]=false;//递归的需要,这一点特别需要注意的地方
            }
            else if(curl+s[i]<target)
            {
                used[i]=true;
                if(dfs(curs,curl+s[i],i)==true)//这里是继续往下找的意思
                    return true;
                used[i]=false;
            }
        }
        return false;
    }

    int main()
    {
        int T;
        cin>>T;
        while(T--)
        {
            cin>>N;
            sum=0;
            for(int i=0;i<N;i++)
            {
                cin>>s[i];
                sum += s[i];
            }
            if(sum % 4!=0 || N<4)
                cout<<"no"<<endl;
            else
            {
                target=sum/4;
                for(int i=0;i<21;i++)
                    used[i]=false;
                sort(s,s+N,cmp);
                if(target<s[0])
                    cout<<"no"<<endl;
                else if(dfs(0,0,0)==true)
                    cout<<"yes"<<endl;
                else
                    cout<<"no"<<endl;
            }
        }
        return 0;
    }

  • 相关阅读:
    Mvc+三层(批量添加、删除、修改)
    js中判断复选款是否选中
    EF的优缺点
    Git tricks: Unstaging files
    Using Git Submodules
    English Learning
    wix xslt for adding node
    The breakpoint will not currently be hit. No symbols have been loaded for this document."
    Use XSLT in wix
    mfc110ud.dll not found
  • 原文地址:https://www.cnblogs.com/ACWQYYY/p/4374106.html
Copyright © 2011-2022 走看看