nyoj 927 The partial sum problem(搜索)

来源:互联网 发布:淘宝在哪里评价 编辑:程序博客网 时间:2024/06/05 14:50

问题 N: The partial sum problem

时间限制: 1 Sec  内存限制: 64 MB
提交: 23  解决: 11
[提交][状态][讨论版]

题目描述

One day,Tom’s girlfriend give him an array A which contains N integers and asked him:Can you choose some integers from the N integers and the sum of them is equal to K. 

输入

There are multiple test cases. Each test case contains three lines.The first line is an integer N(1≤N≤20),represents the array contains N integers. The second line contains N integers,the ith integer represents A[i](-10^8≤A[i]≤10^8).The third line contains an integer K(-10^8≤K≤10^8).

输出

If Tom can choose some integers from the array and their them is K,printf ”Of course,I can!”; other printf ”Sorry,I can’t!”.

样例输入

41 2 4 71341 2 4 715

样例输出

Of course,I can!Sorry,I can't!
题意:能不能从给的n个数取任意个数的和等于指定的数

#include<stdio.h>#include<string.h>using namespace std;int mat[25];int k,n;int flag;void dfs(int i,int sum){if(i>n||sum>k||flag==1)return;if(sum==k){flag=1;return;}dfs(i+1,sum+mat[i]);dfs(i+1,sum);}int main(){while(~scanf("%d",&n)){flag=0;for(int i=0;i<n;i++)scanf("%d",&mat[i]);scanf("%d",&k);dfs(0,0); if(flag) printf("Of course,I can!\n");else printf("Sorry,I can't!\n");}return 0;}