背包习题讲解一.ppt

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
背包习题讲解一

单击此处编辑母版标题样式 单击此处编辑母版副标题样式 背包习题讲解一 主讲人:山成虎 1.砝码称重 参考程序一: var c,a,f:Array[0..2000]of longint; i,j,k,ans:longint; begin for i:=1 to 6 do read(a[i]); c[1]:=1; c[2]:=2; c[3]:=3; c[4]:=5; c[5]:=10; c[6]:=20; f[0]:=1; for i:=1 to 6 do for j:=1000 downto c[i] do for k:=1 to a[i] do if f[j-k*c[i]]=1 then f[j]:=1; for i:=1 to 1000 do if f[i]=1 then inc(ans); writeln(Total=,ans); end. 参考程序二: var c,a,f:Array[0..2000]of longint; i,j,k,ans:longint; begin for i:=1 to 6 do read(a[i]); c[1]:=1; c[2]:=2; c[3]:=3; c[4]:=5; c[5]:=10; c[6]:=20; f[0]:=1; for i:=1 to 6 do for k:=1 to a[i] do for j:=1000 downto c[i] do if f[j-c[i]]=1 then f[j]:=1; for i:=1 to 1000 do if f[i]=1 then inc(ans); writeln(Total=,ans); end. 2.装箱问题 参考程序: var f:array[0..20000]of boolean; v,m,i,j,o,max:longint; begin readln(v); readln(m); f[0]:=true; for i:=1 to m do begin readln(o); for j:=v downto 0 do if (j+o=v)and(f[j]) then f[j+o]:=true; end; for j:=0 to v do if f[j] then max:=j; writeln(v-max); end. 3.采药 参考程序: var t,m,i,j,c,w,max:longint; f:array[0..100000]of longint; begin readln(t,m); for i:=1 to m do begin readln(w,c); for j:=t downto w do if f[j-w]+cf[j] then f[j]:=f[j-w]+c; end; for i:=1 to t do if maxf[i] then max:=f[i]; writeln(max); end. 4.开心的金明 参考程序: var n,m,w,c,i,j:longint; f:array[0..100000]of longint; begin readln(n,m); for i:=1 to m do begin readln(w,c); c:=c*w; for j:= n downto w do if f[j-w]+cf[j] then f[j]:=f[j-w]+c; end; for i:=2 to n do if f[i]f[1] then f[1]:=f[i]; writeln(f[1]); end. 5.竞赛总分 参考程序: var m,n,w,u,i,j:longint; f:Array[0..100000]of longint; begin readln(m,n); for i:=1 to n do begin readln(w,u); for j:=u to m do if f[j-u]+wf[j] then f[j]:=f[j-u]+w; end; for j:=1 to m do if f[j]f[0] then f[0]:=f[j]; writeln(f[0]); end. 6.最小乘车费用 参考程序: program p1044; var

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档