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;
    }

  • 相关阅读:
    江西财经大学第一届程序设计竞赛 I 题 小P和小Q
    江西财经大学第一届程序设计竞赛 H题- 小P的数学问题
    C# 窗体
    数据库操作(对战游戏)
    数据库操作 (数据操作类)
    练习
    泛型集合
    数据库操作 (防注入攻击)
    数据库操作(增删改)
    DO.NET操作数据库
  • 原文地址:https://www.cnblogs.com/ACWQYYY/p/4374106.html
Copyright © 2011-2022 走看看