noip-2000乘积最大 2008.11.5
一直wa掉一组,却找不到原因
我的
program cjzd;
const fin='cjzd.in';fout='cjzd.out';
maxn=41;maxm=7;
var f1,f2:text;
n,m,i,j,code:longint;
f:array[0..maxn,-1..maxm]of int64;
g:array[0..maxn,0..maxn]of int64;
a:string;
procedure init;
var i,j:longint;t:string;
begin
assign(f1,fin);reset(f1);
assign(f2,fout);rewrite(f2);
readln(f1,n,m);
readln(f1,a);
fillchar(f,sizeof(f),0);
fillchar(g,sizeof(g),0);
for i:=1 to n do
for j:=1 to n-i+1 do
val(copy(a,i,j),g[i,i+j-1],code);
for i:=1 to n do
f[i,0]:=g[1,i];
end;
procedure dp;
var i,j,max,nn,k:longint;
begin
for i:=1 to n do
for j:=0 to m do
for k:=1 to i-1 do
begin nn:=f[k,j-1]*g[k+1,i];
if nn>f[i,j] then f[i,j]:=nn;
end;
writeln(f2,f[n,m]);
end;
begin
init;
dp;
close(f1);close(f2);
end.
标成:
program EmberAsh;
var
a:array[0..40,0..40]of int64;
f:array[0..100,0..100]of int64;
s,t:string;
i,j,k,ss,max,n,m:longint;
BEGIN
assign(input,'cjzd.in');reset(input);
assign(output,'cjzd.out');rewrite(output);
readln(n,m);
readln(s);
for i:=1 to n do
for j:=i to n do
begin
t:=copy(s,i,j-i+1);
val(t,a[i,j]);
//a[j,i]:=a[i,j];
end;
for i:=1 to n do
f[i,1]:=a[1,i];{边界}
for i:=1 to n do
for j:=1 to m+1 do
for k:=1 to i-1 do
if f[k,j-1]*a[k+1,i]>=f[i,j] then
f[i,j]:=f[k,j-1]*a[k+1,i];
for i:=1 to n do
begin
for j:=1 to m do
write(f[i,j]:5);
writeln;
end;
writeln(f[n,m+1]);
close(input);close(output);
END.