码迷,mamicode.com
首页 > 其他好文 > 详细

dfs入门

时间:2018-02-18 22:44:34      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:入门   cin   pac   for   std   pen   pos   turn   closed   

问题是 给你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入门

标签:入门   cin   pac   for   std   pen   pos   turn   closed   

原文地址:https://www.cnblogs.com/renxin123/p/8453300.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!