lanqiao OJ 803 方格取数

简介: lanqiao OJ 803 方格取数

题库 - 蓝桥云课 (lanqiao.cn)

f[i][j][k] 表示走到第i行第j列的且从k方向来的最大值

0从左边来  1从上面来 2从下面来

#include<iostream>
#include<cstring>
#include<algorithm>
 
using namespace std ;
const int N = 1e3 +10 ,INF = 1e9 ;
int f[N][N][3] ;
int g[N][N] ;
int n , m ;
int main(){
    cin >> n >> m ;
    for(int i = 1 ; i <= n ;i ++){
        for(int j = 1 ; j <= m ; j ++){
            cin >> g[i][j] ;
        }
    }
    for(int j = 1 ; j <= m ; j ++){
        
        for(int i = 1 ; i <= n ; i ++){
            f[i][j][0] = max(f[i][j-1][0], max(f[i][j-1][1],f[i][j-1][2])) + g[i][j] ;
            f[i][j][1] = max(f[i-1][j][0] , f[i-1][j][1]) + g[i][j] ;
            if(j==1) f[i][j][0] = f[i][j][1];
            if(i==1) f[i][j][1] =  f[i][j][0] ;
            
            
        }
        
        for(int i = n ; i >= 1  ; i --){
            if(i==n) f[i][j][2]= f[i][j][0];
            else f[i][j][2] = max(f[i+1][j][0],f[i+1][j][2]) + g[i][j] ;
        
            if(j==1)
                f[i][j][2] = -INF;
            
        }
    }
    cout << max(f[n][m][0],max(f[n][m][1],f[n][m][2])) << endl ;
    return 0 ;
}
目录
相关文章
|
2月前
lanqiao OJ 1447 砝码称重
lanqiao OJ 1447 砝码称重
31 1
|
2月前
lanqiao OJ 664 方格填数
lanqiao OJ 664 方格填数
13 1
|
2月前
lanqiao OJ 3513 岛屿个数(2023省赛)
lanqiao OJ 3513 岛屿个数(2023省赛)
16 2
|
2月前
lanqiao OJ 644 方格分割
lanqiao OJ 644 方格分割
20 1
|
2月前
lanqiao OJ 649 算式900
lanqiao OJ 649 算式900
16 1
|
2月前
lanqiao OJ 1032 画廊
lanqiao OJ 1032 画廊
23 2
|
2月前
lanqiao OJ 108 发现环
lanqiao OJ 108 发现环
16 1
|
2月前
lanqiao OJ 99 分巧克力
lanqiao OJ 99 分巧克力
14 1
|
2月前
lanqiao oj 1628 最短循环节问题
lanqiao oj 1628 最短循环节问题
9 0
|
2月前
lanqiao OJ 641 迷宫
lanqiao OJ 641 迷宫
34 0