wyhbb163 2008-09-30 21:45:00
点我顶贴
收藏
删除
var
d:array[0..501,1..2] of integer;
f:array[0..501,0..501] of integer;
ch,n,c,i,j,q:integer;
begin
fillword(f,sizeof(f)div 2,1000);
readln(n,c);
for i:=1 to N do begin
readln(ch);
d[i,1]:=d[i-1,1];
d[i,2]:=d[i-1,2];
case ch of
1:d[i,1]:=d[i,1]+1;
0:d[i,2]:=d[i,2]+1;
end;
end;
for i:=1 to n do f[i,1]:=d[i,1]*d[i,2];
for i:=2 to c do
for j:=i to n do
for q:=i-1 to j do
if f[q,i-1]+(d[j,1]-d[q,1])*(d[j,2]-d[q,2])<f[j,i] then f[j,i]:=f[q,i-1]+(d[j,1]-d[q,1])*(d[j,2]-d[q,2]);
writeln(f[n,c]);
end.
为什么80分,而且好像都是输出8位,估计是数组有问题。
#2 lizhixin@2008-09-30 21:45:00
6369
回复
删除
谢谢楼上!
program horse;
var a,b:array[0..600]of longint;
f:array[0..600,0..600]of longint;
co,n,m,i,c,k,j:longint;