解题思路:dfs三种情况就行了 放物体一边 不放 放物体对面
注意事项:
参考代码:
#include<iostream> #include<algorithm> using namespace std; int n, m; int num; int a[25], sum[25]; int flag = 0; void fun(int x, int y) { if(flag == 1) { return ; } if(abs(x)>sum[y])///判断以后的砝码是否能称出来现在的重量 return; if(x == 0||abs(x)==sum[y]) { flag = 1; return ; } if(y<0) { return; } fun(x-a[y], y-1);//不和物品放一起 fun(x, y-1);//不放砝码 fun(x+a[y], y-1);//放在物品的对立边 return; } int main() { cin>>n>>m; for(int i = 0; i < n; i++) { cin>>a[i]; if(i>0) sum[i]=sum[i-1]+a[i];///前i个砝码重量和 else sum[0]=a[0]; } // sort(a, a+n); for(int i = 0; i < m; i++) { flag = 0; cin>>num; fun(num,n-1); if(flag == 0) { cout<<"NO"<<endl;; } else { cout<<"YES"<<endl; } } return 0; }
0.0分
0 人评分
2006年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:468 |
C语言训练-大、小写问题 (C语言代码)浏览:2349 |
【计算两点间的距离】 (C语言代码)浏览:879 |
【魔板】 (C++代码)(时间超限,希望会的帮我改正一下)浏览:738 |
用筛法求之N内的素数。 (C语言代码)浏览:802 |
【求[X,Y]内被除3余1并且被除5余3的整数的和】 (C语言代码)浏览:672 |
幸运数 (C++代码)浏览:2859 |
【出圈】 (C++代码)简单循环浏览:628 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:438 |
逆反的01串 (C语言代码)浏览:1435 |