51nod 1268 和为K的组合 dfs
生活随笔
收集整理的這篇文章主要介紹了
51nod 1268 和为K的组合 dfs
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:
1268 和為K的組合
基準時間限制:1 秒 空間限制:131072 KB 分值: 20 難度:3級算法題
給出N個正整數組成的數組A,求能否從中選出若干個,使他們的和為K。如果可以,輸出:”Yes”,否則輸出”No”。
Input
第1行:2個數N, K, N為數組的長度, K為需要判斷的和(2 <= N <= 20,1 <= K <= 10^9)
第2 - N + 1行:每行1個數,對應數組的元素A[i] (1 <= A[i] <= 10^6)
Output
如果可以,輸出:”Yes”,否則輸出”No”。
Input示例
5 13
2
4
6
8
10
Output示例
No
思路:dfs搜索,取或者不取。
代碼:
#include <bits\stdc++.h> using namespace std; typedef long long ll;int a[22]; int n,k;bool flag = false;void dfs(int x ,int k){if(k == 0){flag = true;return;}if(flag) return;if(x == n) return;if(k < 0) return;dfs(x+1,k);dfs(x+1,k-a[x]); }int main() {cin >> n >> k;for(int i = 0;i < n; i++){cin >> a[i];}dfs(0,k);if(flag) cout << "Yes" << endl;else cout << "No" << endl;return 0; } // writen by zhangjiuding總結
以上是生活随笔為你收集整理的51nod 1268 和为K的组合 dfs的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POJ 1852 Ants O(n)
- 下一篇: C++ STL next_permuta