题目描述
设有1g1g、2g2g、3g3g、5g5g、10g10g、20g20g的砝码各若干枚(其总重\le 1000≤1000),
输入输出格式
输入格式:
输入方式:a_1 , a_2 ,a_3 , a_4 , a_5 ,a_6a1,a2,a3,a4,a5,a6
(表示1g1g砝码有a_1a1个,2g2g砝码有a_2a2个,…,20g20g砝码有a_6a6个)
输出格式:
输出方式:Total=NTotal=N
(NN表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)
输入输出样例
输入样例#1: 复制
1 1 0 0 0 0
输出样例#1: 复制
Total=3
动态规划求方案个数
#include <bits/stdc++.h>
using namespace std;
int main()
{
int weight[7] = {1,2,3,5,10,20}, num[7], res = 0;
bool visited[1002] = {0};
for(int i = 0; i < 6; i++)
cin >> num[i];
visited[0] = true;
for(int i = 0; i < 6; i++)
for(int j = 0; j < num[i]; j++)
for(int k = 1000; k>=0; k--)
if(visited[k] && k+weight[i] <= 1000)
visited[k+weight[i]] = true;
for(int i = 1; i <= 1000; i++)
if(visited[i])
res++;
cout << "Total=" << res << endl;
return 0;
}