部分和问题(dfs)

给定整数a1,a2,a3...an 判断是否可以从中选出若干数 使他们的和恰好为0

#include<stdio.h>
#include<stdlib.h>
int a[10000];
int 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)) 
        printf("YES");
    else
        printf("no");
    
}

int main() {
    scanf("%d", &n);
    int c = n;
    while (c--) {
        scanf("%d", &a[c]);
    }
    scanf("%d", &k);
    solve();
    //system("pause");
    return 0;
}

 

posted @ 2018-11-05 18:02  风间6324  阅读(131)  评论(0编辑  收藏  举报