1 条题解
-
0
C++ :
#include <iostream> #include<cstdio> #include<cstdlib> using namespace std; #define M 101 #define INF 1000000000 int n,f[M][M],sum[M][M],stone[M]; int main() { int i,j,k,t; cin>>n; for(i=1;i<=n;i++) scanf("%d",&stone[i]); for(i=1;i<=n;i++) { f[i][i]=0; sum[i][i]=stone[i]; for(j=i+1;j<=n;j++) sum[i][j]=sum[i][j-1]+stone[j]; } for(int len=2;len<=n;len++) { for(i=1;i<=n-len+1;i++) { j=i+len-1; f[i][j]=INF; for(k=i;k<=j-1;k++) { if(f[i][j]>f[i][k]+f[k+1][j]+sum[i][j]) f[i][j]=f[i][k]+f[k+1][j]+sum[i][j]; } } } printf("%d\n",f[1][n]); return 0; }
Pascal :
uses math; var i,n,k,l,x:longint; f:array[0..101,0..101]of longint; s:array[0..101]of longint; begin fillchar(f,sizeof(f),$7f div 3); readln(n); s[0]:=0; for i:=1 to n do begin read(x); f[1,i]:=0; s[i]:=s[i-1]+x; end; for l:=2 to n do for x:=1 to n-l+1 do begin for k:=1 to l-1 do f[l,x]:=min(f[l,x],f[k,x]+f[l-k,x+k]); f[l,x]:=f[l,x]+s[x+l-1]-s[x-1]; end; write(f[n,1]); end.
- 1
信息
- ID
- 2112
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者