华为OJ题目(十):称砝码

来源:互联网 发布:mac虚拟机win10分辨率 编辑:程序博客网 时间:2024/05/19 04:52

#include <iostream>#include <cstdio>using namespace std;int x[99], m[99], f[99999];int main(){int n, i, j, k, M = 0;cin >> n; //砝码种类for (i = 1; i <= n; i++) //每种砝码的重要scanf("%d", &m[i]);for (i = 1; i <= n; i++) //每种砝码的最大数量scanf("%d", &x[i]);for (i = 1; i <= n; i++)M += m[i] * x[i];f[0] = 1;for (i = 1; i <= n; i++) //涉及动态规划for (j = M; j >= 0; j--)for (k = 1; k <= x[i]; k++){f[j] = f[j] | f[j - k*m[i]];//不是很懂?还望大神指教一下}int num = 0;for (i = 0; i <= M; i++)if (f[i]) num++;cout << num << endl;return 0;}


0 0
原创粉丝点击