方格取数or传纸条

用简单的搜索,之前听了从清北写的,一直没写博客,现在补上
这两个题实际上是一样的,传纸条虽然有一个是倒着传,其实和正着传是一样的,所以是一样的
就是用一个四维数组,记下两个点的坐标,两个点都可以向上或向下走,所以可以转移到四种情况,就是我下面分的四种
还可以用动归
动态转移方程是
dp[x][y][x2][y2]=max(dp[x][y-1][x2][y2-1],dp[x-1][y][x2][y2-1],dp[x][y-1][x2-1][y2],dp[x-1][y][x2-1][y2])+a[x][y]+a[x2][y2]-(x==x2&&y==y2)*a[x][y];

#include
#include 
using namespace std;
int m,n;
int a[55][55];
int dp[55][55][55][55];
int ans=0;
int dfs(int x,int y,int x2,int y2)
{    
    if(x==n&&y==n) {return 0;}
    if(xx][y][x2][y2]=max(dp[x][y][x2][y2],(dp[x+1][y][x2+1][y2]?dp[x+1][y][x2+1][y2]:
    dfs(x+1,y,x2+1,y2))+a[x+1][y]+a[x2+1][y2]-(x+1==x2+1&&y==y2)*a[x+1][y]);
    if(xx][y][x2][y2]=max(dp[x][y][x2][y2],(dp[x+1][y][x2][y2+1]?dp[x+1][y][x2][y2+1]:
    dfs(x+1,y,x2,y2+1))+a[x+1][y]+a[x2][y2+1]-(x+1==x2&&y==y2+1)*a[x+1][y]);
    if(yx][y][x2][y2]=max(dp[x][y][x2][y2],(dp[x][y+1][x2+1][y2]?dp[x][y+1][x2+1][y2]:
    dfs(x,y+1,x2+1,y2))+a[x][y+1]+a[x2+1][y2]-(x==x2+1&&y+1==y2)*a[x][y+1]);
    if(yx][y][x2][y2]=max(dp[x][y][x2][y2],(dp[x][y+1][x2][y2+1]?dp[x][y+1][x2][y2+1]:
    dfs(x,y+1,x2,y2+1))+a[x][y+1]+a[x2][y2+1]-(x==x2&&y+1==y2+1)*a[x][y+1]);
    return dp[x][y][x2][y2];
}
int main()
{
    scanf("%d",&n);int x,y,z;
    while(~scanf("%d%d%d",&x,&y,&z)){
        if(x==0&&y==0&&z==0)
        {
            break;
        }
        a[x][y]=z;
    }

    printf("%d",dfs(1,1,1,1)+a[1][1]);
    return 0;
}
#include
#include 
using namespace std;
int m,n;
int a[55][55];
int dp[55][55][55][55];
int ans=0;
int Max(int x,int y,int z,int w){
    return max(x,max(y,max(z,w)));
}
int main()
{
    scanf("%d",&n);int x,y,z;
    while(~scanf("%d%d%d",&x,&y,&z)){
        if(x==0&&y==0&&z==0)
        {
            break;
        }
        a[x][y]=z;
    }
   for(int x=1;x<=n;x++)
   for(int y=1;y<=n;y++)
   for(int x2=1;x2<=n;x2++)
   for(int y2=1;y2<=n;y2++){
    dp[x][y][x2][y2]=Max(dp[x][y-1][x2][y2-1],dp[x-1][y][x2][y2-1],dp[x][y-1][x2-1][y2],dp[x-1][y][x2-1][y2])+a[x][y]+a[x2][y2]-(x==x2&&y==y2)*a[x][y];
   }
    printf("%d",dp[n][n][n][n]);
    return 0;
}

你可能感兴趣的:(dp)