1 solutions

  • 0
    @ 2025-11-5 15:00:53

    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