找数达人
时间限制:
1000 ms | 内存限制:
65535 KB
难度:2
-
描述
-
小明最近做出了一道题:如何在一组数中寻找三个数,这三个数的和等于一给出的定值m,洋洋得意。于是小华不乐意了,小华说,你能找找在一组数字中是否有n个数,使得这n个数的和等于一给定的定值m吗?
1.0 < 数字大小 <= 1000
2. 0 < 序列中数字个数 <= 1000
3. 0 <= m <=1000
-
输入
- 多组数据,每组两行,第一行为序列内容,第二行为m的值。 输出
- 如能找到,输出Yes,否则,输出No。 样例输入
-
1 3 4 5
-
5
-
1 3 4 5 9
-
2
样例输出
-
Yes
-
No
#include<stdio.h> #include<string.h> int main() { int i,j,x,m,n,dp[1010],a[1010]; char ch; while(scanf("%d",&x)!=EOF) { memset(dp,0,sizeof(dp)); n=0; a[n++]=x; ch=getchar(); while(ch!='\n') { scanf("%d",&x); a[n++]=x; ch=getchar(); } scanf("%d",&m); dp[0]=1; for(i=0;i<n;i++) { for(j=m;j>=a[i];j--) { if(dp[j-a[i]]==1) dp[j]=1; } } if(dp[m]==1) printf("Yes\n"); else printf("No\n"); } return 0; }