zoukankan      html  css  js  c++  java
  • 算法训练方格取数

    #include<bits/stdc++.h>
    using namespace std;
    // 走两次是不行的,因为这就是贪心了。。
    // 需要多线程dp,就是想象有2个人同时走,他们可以走到一起,但是必须只加一次;
    // 转移方程:
    // (1)a,b都从上/下走过来
    // (2)a,b一个上一个下走过来
    // 共4种
    //dp 数组代表a到哪,b到哪,可以不一样
    int dp[11][11][11][11]={0},a[11][11]={0};
    int main()
    {
        int n,x,y,z,s;
        cin>>n;
        while(1){
            cin>>x>>y>>z;
            if(x==y&&y==z&&z==0) break;
            a[x][y]=z;
        }
    for( int x1 = 1; x1 <= n; x1++ ) {
        for( int y1 = 1; y1 <= n; y1++ ) {
            for( int x2 = 1; x2 <= n; x2++ ) {
                for( int y2 = 1; y2 <= n; y2++ ){
                    int t=max(dp[x1-1][y1][x2-1][y2],dp[x1][y1-1][x2][y2-1]);
                    t=max(t,dp[x1-1][y1][x2][y2-1]);
                    t=max(t,dp[x1][y1-1][x2-1][y2]);
                    if(x1==x2&&y1==y2){
                        //代表到达同一位置,只能,加一次,每次都这样,就保证了前面的也不会重复加
                        dp[x1][y1][x2][y2]=t+a[x1][y1];
                    }
                    else dp[x1][y1][x2][y2]=t+a[x1][y1]+a[x2][y2];
                }
            }
        }
    }
        cout<<dp[n][n][n][n]<<endl;
        return 0;
     }
  • 相关阅读:
    go语言与区块链
    git+jenkins
    cicd
    devops
    Go 并发
    Thinkphp5-未定义数据库类型
    用golang写爬虫
    kubernetes-通过VMware搭建k8s集群遇到的问题
    亚马逊全球开店2019
    kafka命令大全
  • 原文地址:https://www.cnblogs.com/MorrowWind/p/13056411.html
Copyright © 2011-2022 走看看