讨论 / 数据太弱!!!
king13 2008-08-25 00:54:00
点我顶贴 收藏 删除
Var

d:array[0..2000000]of Longint;

a:array[1..10]of longint;

ans,dist:longint;

Procedure Init;

Var

i:integer;

Begin

Filldword(d,sizeof(d)div 4,10000000);

Fillchar(a,sizeof(a),0);

For i:=1 to 10 do

Read(a[i]);

Readln;

Readln(dist);

End;

Procedure Main;

Var

i,j:longint;

Begin

d[0]:=0;

For i:=1 to 10 do

For j:=dist downto i do

Begin

IF d[j]>d[j-i]+a[i] then

d[j]:=d[j-i]+a[i];

End;

Ans:=d[dist];

End;

Procedure Print;

Begin

Writeln(Ans);

End;

Begin

Init;

Main;

Print;

End.

这居然只有两个点过不了

下面的才是对的

Var

d:array[0..2000000]of Longint;

a:array[1..10]of longint;

ans,dist:longint;

Procedure Init;

Var

i:integer;

Begin

Filldword(d,sizeof(d)div 4,10000000);

Fillchar(a,sizeof(a),0);

For i:=1 to 10 do

Read(a[i]);

Readln;

Readln(dist);

End;

Procedure Main;

Var

i,j:longint;

Begin

d[0]:=0;

For i:=1 to 10 do

For j:=i to dist do

Begin

IF d[j]>d[j-i]+a[i] then

d[j]:=d[j-i]+a[i];

End;

Ans:=d[dist];

End;

Procedure Print;

Begin

Writeln(Ans);

End;

Begin

Init;

Main;

Print;

End.

#1 Jollwish@2008-08-12 06:54:00
回复 删除
需要吗?

var m:array[1..10000000]of longint;

a:array[1..10]of longint;

i,j,s:longint;

begin

for i:=1 to 10 do read(a[i]);

readln;

readln(s);

for i:=1 to s do m[i]:=maxlongint;

for i:=1 to s do

for j:=1 to 10 do

if (i>=j)and(m[i-j]+a[j]<m[i]) then m[i]:=m[i-j]+a[j];

write(m[s]);

end.

#2 vinence@2008-08-12 08:28:00
回复 删除
的确不需要

-------------------------------------------------

const

n=10;

var

i,j,s:integer;

f:array[0..1000] of longint;

a:array[1..10] of integer;

begin

for i:=1 to n do read(a[i]);

readln(s);

for i:=1 to s do

begin

f[i]:=f[i-1]+a[1];

for j:=2 to 10 do

if i-j>=0 then

if f[i-j]+a[j]<f[i] then f[i]:=f[i-j]+a[j];

end;

writeln(f[s]);

end.

#3 king13@2008-08-12 23:14:00
回复 删除
程序并不一定要短

重要的是清晰

#4 wish@2008-08-12 23:19:00
回复 删除
程序并不一定要贴

重要的是思路

#5 king13@2008-08-25 00:14:00
回复 删除
你们就是太注重虚的东西拉

只有写出来的程序才是硬道理

#6 wwww@2008-08-25 00:54:00
回复 删除
此题真水
查看更多回复
提交回复