SSL 1072——砝码称重
2017-04-21 19:47
405 查看
Description
设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000),
要求:
输入方式:a1 a2 a3 a4 a5 a6
(表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个)
输出方式:N
(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)
Input
Output
Sample Input
1 1 0 0 0 0
(注:下划线表示空格)
Sample Output
3 表示可以称出1g,2g,3g三种不同的重量。
最大只能为1000,
状态转移方程: f[j]:=max(f[j-k*v[i]]+k*v[i],f[j]);
1<=i<=6
1<=j<=1000
1<=k<=a[i]
代码如下:
设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000),
要求:
输入方式:a1 a2 a3 a4 a5 a6
(表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个)
输出方式:N
(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)
Input
Output
Sample Input
1 1 0 0 0 0
(注:下划线表示空格)
Sample Output
3 表示可以称出1g,2g,3g三种不同的重量。
最大只能为1000,
状态转移方程: f[j]:=max(f[j-k*v[i]]+k*v[i],f[j]);
1<=i<=6
1<=j<=1000
1<=k<=a[i]
代码如下:
const v:array[1..6] of longint=(1,2,3,5,10,20); var f,a:array[0..1000] of longint; w:array[0..1000] of boolean; i,j,k,n,total:longint; function max(a,b:longint):longint; begin if a>b then exit(a) else exit(b); end; begin for i:=1 to 6 do read(a[i]); for i:=1 to 6 do for j:=1000 downto 1 do for k:=1 to a[i] do if j>=v[i]*k then begin f[j]:=max(f[j-k*v[i]]+k*v[i],f[j]); w[f[j]]:=true; end; for i:=1 to 1000 do if w[i] then inc(total); writeln(total); end.
相关文章推荐
- ssl1072-砝码称重【dp练习】
- (ssl1072、ssl1273、ssl1274)P2347 砝码称重
- 砝码称重 【SSL JudgeOnline 1072】
- 洛谷Oj-P1441 砝码称重-深搜+DP/Bitset
- 1449 砝码称重 51NOD
- 蓝桥杯篇2 - 砝码称重
- ADV-192盾神与砝码称重
- 51nod1449 砝码称重
- 2144 砝码称重 2
- 51nod 1449 砝码称重
- 砝码称重问题,因式分解有妙用
- CODEVS_2144 砝码称重 2 折半搜索+二分查找+哈希
- 砝码称重
- 51nod 1449:砝码称重
- 2017校招-砝码称重
- 洛谷P1441 砝码称重 bitset状压
- luogu1441砝码称重(深搜+背包:组合数+01背包)
- 砝码称重问题求解:动态规划与母函数方法
- 砝码称重
- 砝码称重问题求解---动态规划与母函数方法