问题求解:求出一种分法,使P为最小(若有多种方案仅记一种〉
程序说明:
数组:a[1],a[2],...a[n]存放原数
s[1],s[2],...,s[k]存放每个部分的和
b[1],b[2],...,b[n]穷举用临时空间
d[1],d[2],...,d[n]存放最佳方案
程序:
program exp4; var i,j,n,k : integer; a :array [1..100] of integer; b,d:array [0..100] of integer; s :array[1..30] of integer; begin readln(n,k); for i:=1 to n do read(a[i]); for i:=0 to n do b[i]:=1; cmin:=1000000; while (b[0]=1) do begin for i:=1 to k do 1 for i:=1 to n do 2 sum:=0; for i:=1 to k-1 do for j:= 3 sum:=sum+(s[i]-s[j])*(s[i]-s[j]); if 4 then begin cmin:=sum; for i:=1 to n do d[i]:=b[i]; end; j:=n; while 5 do j:=j-1; b[j]:=b[j]+1; for i:=j+1 to n do 6 end; writeln(cmin); for i:=1 to n do write(d[i]:40); writeln; end.