dfs入门

Posted renxin123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dfs入门相关的知识,希望对你有一定的参考价值。

问题是 给你a1到an的所有数字,让你找到和为k的情况有没有可能存在。

分析:

每一个数字都有加或者不加的情况,所以用深度搜索把所有情况都遍历一下即可

代码如下:

技术分享图片
#include<iostream>
using namespace std;
#define Max_n 100000
int a[Max_n],n,k;
bool dfs(int i,int sum)
{
    if(i==n)
        return sum==k;
    if(dfs(i+1,sum))
    return true;
    if(dfs(i+1,sum+a[i]))
        return true;
    return false;
}
void solve()
{
    if(dfs(0,0))
        cout<<"Yes"<<endl;
    else
        cout<<"No"<<endl;
}
int main()
{
     while(cin>>n)
    {
        int i;
        for(i=0;i<n;i++)
        cin>>a[i];
        cin>>k;
        solve();
    }








    return 0;
}
View Code

 

以上是关于dfs入门的主要内容,如果未能解决你的问题,请参考以下文章

dfs入门

poj1562 DFS入门

Atom编辑器入门到精通 Atom使用进阶

Cg入门20:Fragment shader - 片段级模型动态变色(实现汽车动态换漆)

ACM入门之dfs序列

Cg入门19:Fragment shader - 片段级模型动态变色