|
发行一套四种不同面值的邮票,限定使用时不超过3枚,为了能连续贴出1,2,...,r的面值, 如何确定四种面值,使 r 最大?
program lxw002; var s1,s2,s3,s4: integer; r,r0,r1,r2,r3,r4: integer; stamp: set of 1..100; function workr(s1,s2,s3,s4:integer):integer; var n1,n2,n3,n4,f:integer; begin stamp:=[]; for n1:=0 to 3 do for n2:=0 to 3-n1 do for n3 :=0 to 3-n1-n2 do for n4:=0 to 3-n1-n2-n3 do begin f:=n1*s1+n2*s2+n3*s3+n4*s4; stamp:=stamp+[f] end; f:=1; while f in stamp do f:=f+1; workr:=f-1 end; begin{main}; s1:=1; r0:=0; for s2:=s1+1 to 3*s1+1 do for s3:=s2+1 to 3*s2+1 do for s4:=s3+1 to 3*s3+1 do begin r:=workr(s1,s2,s3,s4); if r>r0 then begin r0:=r; r1:=s1; r2:=s2; r3:=s3; r4:=s4 end; end; writeln("s1=",r1,", s2=",r2,", s3=",r3,", s4=",r4); writeln("The max value is: ",r0) end. |