遛狗(遛狗)

题目描述

小智养了一条狗,有一天把它带出来遛,路过一片玉米地,他的狗用一种很萌的眼神告诉他饿了(狗要吃玉米?!暂且不讨论这个问题……)。小智没办法,只好带他进去偷,不过为了不被发现,他们只能往下、左、右三个方向走(有联系吗?……),走过的点上如果有玉米,他们就会全部偷走,然后那里的玉米就木有了。这是一个高端的农场,某些点会设有机器人,当你走到这些机器人的时候会掉落一定的玉米(然后就消失了),然后这个机器人就不再起作用了。

小智想到反正都来了,不如多偷一点,所以他想知道从第一行任意一个位置开始,一直到最后一行任意一个位置结束,最终他最多能得到多少的玉米。

输入

第 1 行一个整数,N,表示 N×N 的玉米地

第 2 ~ n+1 行,每行 N 个整数,Aij 表示第 i 行 j 列上的玉米数,如果 Aij 为负数,表示遇到机器人,必须要掉落 |Aij| 的玉米数。相邻整数用一个空格隔开。

输出

输出文件一行一个整数,最后获得的玉米数。

样例输入 复制
3 
5 0 8 
1 1 3 
-10 0 -10
样例输出 复制
18
提示

对于 10%的数据:N<=3

对于 30%的数据:没有机器人(即全为非负数)

对于所有数据:N<=50,-10000<= Aij <=10000

样例解释:(1,1) → (1,2) → (1,3) → (2,3) → (2,2) → (2,1) → (2,2) → (3,2) → 结束

#include<iostream>
using namespace std;

const int = 0x3f3f3f3f; 
int n , a[55][55];

int w(int x , int y)
{
    //自己想吧,提示到这儿就行了,自己写吧,加油! 
}

int main()
{
    cin >> n;
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++)
            cin >> a[i][j];
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++)
            sun[i][j] = sun[i][j - 1] + a[i][j];
    int num = -inf;
    for(int i = 1; i <= n; i++)
        num = max(num , w(1 , i));
    cout << num << endl;
    return 0;
}

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值