题目链接 :https://vjudge.net/problem/Aizu-ALDS1_5_A
穷举搜索
1 #include<stdio.h> 2 3 int n, A[50]; 4 5 int solve (int i,in m) 6 { 7 if( m == 0) return 1; //递归 初始两行的条件都是递归到最底层时使用 8 if( i >= n) return 0; 9 int res = solve (i + 1, m) || solve(i + 1,m - A[i]); //前者为0时,后者为1时 10 return res; 11 } 12 13 int main() 14 { 15 int q, M, i; 16 scanf("%d",&n); 17 for( i = 0;i < n;i++ ) 18 scanf("%d",&A[i]); 19 scanf("%d",&q); 20 for(i = 0;i < q;i++) 21 { 22 scanf("%d",&M); 23 if( solve(0,M) ) printf("yes\n"); 24 else printf("no\n"); 25 } 26 return 0; 27 }