主题:求助,砝码问题
wangminrui0804
[专家分:30] 发布于 2010-03-23 19:04:00
有5个砝码,分别为1kg,2kg,3kg,4kg,5kg,每种砝码只有一个。问:用这些砝码最多可以称出多少种重量?每种重量又有多少种称法?
输入:无
输出:
第一行输出可称出多少种重量(n)
第二行输出第一种重量可以用几种方法来称(a[1])
第三行输出第二种重量可以用几种方法来称(a[2])
……
第N行输出第N种重量可以用几种方法来称(a[n])
求最简单易懂、时间量和空间量的复杂度小的程序!!!!!!(最好可以尽可能优化)
回复列表 (共2个回复)
沙发
小田甜 [专家分:3910] 发布于 2010-03-27 13:03:00
每个砝码3种情况(左、右、不放)穷举,然后统计即可。
板凳
神的思想 [专家分:80] 发布于 2010-04-07 22:04:00
program ex;
var i,j,s1,s2,s:longint;
a,b:array[0..100] of longint;
begin
for i:=0 to 5 do b[i]:=0;
for i:=0 to 15 do a[i]:=0;
while b[0]=0 do
begin
b[5]:=b[5]+1;
j:=5;
while b[j]=3 do
begin
b[j]:=0;
j:=j-1;
b[j]:=b[j]+1;
end;
s1:=0;s2:=0;
for i:=1 to 5 do
if b[i]=1 then s1:=s1+i
else if b[i]=2 then s2:=s2+i;
s1:=abs(s1-s2);
a[s1]:=a[s1]+1;
end;
s:=0;
for i:=1 to 15 do if a[i]<>0 then s:=s+1;
writeln(s);
for i:=1 to 15 do writeln(a[i] div 2);
end.
我来回复