1 条题解
-
0
C :
#include<stdio.h> int m,n,a[51][51]; int f[51][51][51][51]; int my_max(int,int,int,int); int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { scanf("%d",&a[i][j]); } for(int i1=1;i1<=n;i1++) for(int j1=1;j1<=m;j1++) for(int i2=1;i2<=n;i2++) for(int j2=1;j2<=m;j2++) { f[i1][j1][i2][j2]=my_max(f[i1-1][j1][i2][j2-1], f[i1-1][j1][i2-1][j2], f[i1][j1-1][i2-1][j2], f[i1][j1-1][i2][j2-1]); f[i1][j1][i2][j2]+=a[i1][j1]; if(i1!=i2||j1!=j2) f[i1][j1][i2][j2]+=a[i2][j2]; } printf("%d",f[n][m][n][m]); } int my_max(int a,int b,int c,int d) { int tot=0; if(tot<a) tot=a; if(tot<b) tot=b; if(tot<c) tot=c; if(tot<d) tot=d; return tot; }
C++ :
#include<iostream> #include<cstring> #include<cstdio> using namespace std; const int maxn=51; int m,n,a[maxn][maxn],f[maxn][maxn][maxn][maxn]={0}; int my_max(int,int); void work(); int main() { //freopen("message3.in","r",stdin); work(); return 0; } void work() { cin>>m>>n; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++)cin>>a[i][j]; for(int i1=1;i1<=m;i1++) for(int j1=1;j1<=n;j1++) for(int i2=1;i2<=m;i2++) for(int j2=1;j2<=n;j2++) if(i1!=i2&&j1!=j2) { int x=my_max(f[i1-1][j1][i2-1][j2],f[i1][j1-1][i2][j2-1]); int y=my_max(f[i1-1][j1][i2][j2-1],f[i1][j1-1][i2-1][j2]); f[i1][j1][i2][j2]=my_max(x,y)+a[i1][j1]+a[i2][j2]; //cout<<i1<<' '<<j1<<' '<<i2<<' '<<j2<<' '<<x<<' '<<y<<endl; } cout<<my_max(f[m][n-1][m-1][n],f[m-1][n][m][n-1])<<endl; } int my_max(int x,int y) { if(x>y)return x; else return y; }
Pascal :
var m,n,i,j,k:integer; a:array[1..50,1..50]of integer; f:array[1..100,0..50,0..50]of longint; function max(a,b,c,d:longint):longint; begin max:=-1; if a>max then max:=a; if b>max then max:=b; if c>max then max:=c; if d>max then max:=d; end; begin readln(m,n); for i:=1 to m do for j:=1 to n do read(a[i,j]); for i:=2 to m+n-1 do for j:=1 to m do for k:=1 to m do if (i+1-j>0)and(i+1-k>0) then begin f[i,j,k]:=max(f[i-1,j-1,k-1],f[i-1,j-1,k],f[i-1,j,k-1],f[i-1,j,k]); if (j<>k) then inc(f[i,j,k],a[j,i+1-j]+a[k,i+1-k]) else inc(f[i,j,k],a[j,i+1-j]); end; writeln(f[m+n-1,m,m]); end.
- 1
信息
- ID
- 835
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者