沙盘游戏

题目描述
Ivy是如此地喜欢编程,以至于在面对游戏时也是如此。在沙盘游戏中有一个巨大的方形沙盘(长方形或者正方形),该沙盘被分隔成边长为1的小方格,每个小方格内有一个整数。沙盘玩家需要在沙盘中圈出一个方形(长方形或者正方形都可以)的区域(必须沿着小方格的边界划线,不能穿过小方格的内部),目标是争取被圈区域内的整数之和最大。
为了描述方便,Ivy把这个沙盘用nm个整数来表示,每个整数所在位置表示沙盘中一个边长为1的小方格。
Ivy现在需要编程解决这样一个问题:在nm(n行m列)个整数中选择一个xy(x行y列)的方形区域(x最大可达n,y最大可达m),使得这xy个整数之和是所有可以选择的方形区域中最大的,并输出这个最大总和值。
【输入】
第一行包含n和m二个整数,中间用一个空格分隔,分别表示原始方形区域中所包含的行数和列数。下面有n行,每行m个整数(每个整数的范围是-200到200)组成的数据。
【输出】
一行一个整数,表示某个被圈出的方形区域中所有位置上整数之和,该值必须是所有可以圈出的方形区域所对应整数和中,总和最大的那个,该值确保不超过106 。
样例输入 Copy
3 3
10 -21 9
7 8 4
-6 1 0
样例输出 Copy
19
提示
【输入输出样例说明】圈出的方形区域是第二行的3个整数,即7、8、4,此三数之和为19,为所有可圈出区域中整数之和的最大值。
【数据规模说明】
对于10%的数据,n,m<=5
对于40%的数据,n,m<=30
对于60%的数据,n,m<=40
对于90%的数据,n,m<=80
对于100%的数据,n,m<=280

#include <bits/stdc++.h>
using namespace std;
long long maxn=1000005;
    int s[300][300];
    int a[300][300];
int main()
{
   
    int n,m;
    scanf("%d%d",&n,&m);
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值