經典dfs(depth-first search)

DFS主要在於參數的改變;
樣例輸入:
n=4                //給定n個數字
a={1,2,4,7}    //輸入n個數據
k=15              //目標數字


樣例輸出:
No


題意:
給定的數字在不重複使用的前提下能否達到目標,能輸出Yes,否輸出No



#include<algorithm>
#include<iostream>


using namespace std;


int n,k,a[10000];
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;
}


int main()
{
    cin >> n;
    for(int i=0;i<n;i++)
        cin >> a[i];
    cin >> k;
    if(dfs(0,0)) cout<<"Yes"<<endl;
    cout <<"No"<<endl;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章