1 solutions
-
0
C :
#include<stdio.h> int main() { int n; while((scanf("%d",&n))!=EOF) { int i,j,k,t; int a[10][10]={0},s[10][10][10][10]={0}; int x,y,z; for(;;) { scanf("%d %d %d",&x,&y,&z); a[x][y]=z; if(x==0&&y==0&&z==0) break; } for(i=1;i<=n;i++) for(j=1;j<=n;j++) for(k=1;k<=n;k++) for(t=1;t<=n;t++) { if(s[i][j][k][t]<s[i-1][j][k-1][t]) s[i][j][k][t]=s[i-1][j][k-1][t]; if(s[i][j][k][t]<s[i-1][j][k][t-1]) s[i][j][k][t]=s[i-1][j][k][t-1]; if(s[i][j][k][t]<s[i][j-1][k][t-1]) s[i][j][k][t]=s[i][j-1][k][t-1]; if(s[i][j][k][t]<s[i][j-1][k-1][t]) s[i][j][k][t]=s[i][j-1][k-1][t]; if(i==k&&j==t) s[i][j][k][t]=s[i][j][k][t]+a[i][j]; else s[i][j][k][t]=s[i][j][k][t]+a[i][j]+a[k][t]; } printf("%d\n",s[i-1][j-1][k-1][t-1]); } return 0; }C++ :
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> using namespace std; int a[15][15],f[15][15][15][15]; int max(int a,int b) { return a>b?a:b; } int main() { int n,i,j,k,l; scanf("%d",&n); while(scanf("%d%d%d",&i,&j,&k),i,j,k) { a[i][j]=k; } memset(f,0,sizeof(f)); for(i = 1; i <= n ; i++) for( j = 1; j <= n ; j++) for( k = 1; k <= n ;k ++) for(l = 1 ; l <= n ; l++ ) { if((i<n||j<n)&&i<=k&&j<=l) continue; int sum = a[1][1] ; sum = max(sum ,f[i-1][j][k-1][l]); sum = max(sum ,f[i][j-1][k][l-1]); if(i-1!=k&&j!=l-1) sum = max(sum ,f[i-1][j][k][l-1]); if(i!=k-1&&j-1!=l) sum = max(sum ,f[i][j-1][k-1][l]); f[i][j][k][l] = sum +a[i][j]+a[k][l]; } printf("%d\n",f[n][n][n][n]-a[n][n]); return 0; }
- 1
Information
- ID
- 16326
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By