问题 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!”.
样例输入
4
1 2 4 7
13
4
1 2 4 7
15
样例输出
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;
}