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.
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.
-------------------------------------------------
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.