###### ~~最开始写的时候被搞蒙了,根本没考虑到砝码的放置会有三种情况,我还以为只能放在物品的另一边,现在才想出来~~
```java
import java.util.Scanner;
public class Main04 {
/**
* @param args
*/
public static int wpzl;
public static int []fmzl;
public static boolean flag=false;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int m=scanner.nextInt();
fmzl=new int[n];
for (int i = 0; i < n; i++) {
fmzl[i]=scanner.nextInt();
}
for (int i = 0; i < m; i++) {
wpzl=scanner.nextInt();
flag=false;
name(0, 0);
if (flag) {
System.out.println("YES");
}
else {
System.out.println("NO");
}
}
}
public static void name(int xb,int zl) {
if (zl==wpzl) {
flag=true;
return;
}
if (xb==fmzl.length) {
return;
}
//每个砝码都有三种情况
name(xb+1, zl+fmzl[xb]);//此砝码放在物品的另一边
name(xb+1, zl);//此砝码不放
name(xb+1, zl-fmzl[xb]);//此砝码和物品放在一起
}
}
```
0.0分
4 人评分