标签:
1、完全背包(knapsack.pas)
AYYZOJ p1473
1 program p1473; 2 const 3 maxm=200; maxn=30; 4 var 5 i,j,n,m:integer; 6 w,u:array[1..maxn] of integer; 7 f:array[0..maxn,0..maxm] of integer; 8 begin 9 fillchar(w,sizeof(w),0); 10 fillchar(u,sizeof(u),0); 11 readln(m,n); 12 for i:=1 to n do readln(w[i],u[i]); 13 for i:=1 to n do 14 begin 15 for j:=1 to w[i]-1 do 16 f[i,j]:=f[i-1,j]; 17 for j:=w[i] to m do 18 if f[i-1,j]>f[i,j-w[i]]+u[i] then f[i,j]:=f[i-1,j] 19 else f[i,j]:=f[i,j-w[i]]+u[i]; 20 end; 21 writeln(f[n,m]); 22 end.
2、货币系统(money.pas)
AYYZOJ p1133
COGS p698
统计完全背包方案数
1 const 2 maxv=25; 3 var 4 v,n,i,j,k,t:longint; 5 a:array[1..maxv] of longint; 6 f:array[0..maxv,0..10000] of int64; 7 begin 8 assign(input,‘moneysys.in‘); reset(input); 9 assign(output,‘moneysys.out‘); rewrite(output); 10 readln(v,n); 11 for i:=1 to v do 12 read(a[i]); 13 for i:=0 to v do f[i,0]:=1; 14 for i:=1 to v do 15 for j:=1 to n do 16 begin 17 f[i,j]:=f[i-1,j]; 18 if j>=a[i] then 19 f[i,j]:=f[i,j]+f[i,j-a[i]]; 20 end; 21 writeln(f[v,n]); 22 close(input); close(output); 23 end.
1 var 2 v,n,i,j:longint; 3 m:array[0..26] of longint; 4 f:array[0..26,0..10000] of int64; 5 begin 6 assign(input,‘moneysys.in‘);reset(input); 7 assign(output,‘moneysys.out‘);rewrite(output); 8 readln(v,n); 9 for i:=1 to v do begin read(m[i]);f[i,0]:=1;end; 10 for i:=1 to v do 11 for j:=1 to n do 12 begin 13 f[i,j]:=f[i,j]+f[i-1,j]; 14 if j-m[i]>=0 then f[i,j]:=f[i,j]+f[i,j-m[i]]; 15 end; 16 writeln(f[v,n]); 17 close(input); 18 close(output); 19 end.
1 {设f[i,j]表示用前i种硬币能表示j面额货币的方法数:则f[i,j]=f[i-1,j]+f[i-1,j-a[i]];即前i种硬币能表示j货币的种类=不用第i种硬币能表示的j货币的种类+用上第i种货币能表示j货币的种类。当然这个方程在空间上还可以简化为一维的 2 } 3 program money; 4 var 5 n,v:integer; 6 cash:array[1.. 25] of integer; 7 f:array[0..10000] of qword; 8 procedure init; 9 var 10 i:integer; 11 begin 12 readln(v,n); 13 for i:=1 to v do read(cash[i]); 14 readln; 15 end; 16 procedure dp; 17 var 18 i,j,k,l:integer; 19 begin 20 fillchar(f,sizeof(f),0); 21 f[0]:=1; 22 for i:=1 to v do 23 for j:=cash[i] to n do 24 inc(f[j],f[j-cash[i]]); 25 writeln(f[n]); 26 end; 27 begin 28 init; 29 dp; 30 end.
标签:
原文地址:http://www.cnblogs.com/vacation/p/5406398.html