用C++解一下这道题好吗

小明承包了一片森林,森林是一个长度为L、宽度为W的矩形,每单位面积上都有一定的木材储量,且储量是独立的。为了赚钱,小明需要砍伐一定的树木并卖掉木材。按照环保规定,他今年的... 小明承包了一片森林,森林是一个长度为 L、宽度为 W 的矩形,每单位面积上都有一定的木材储量,且储量是独立的。为了赚钱,小明需要砍伐一定的树木并卖掉木材。按照环保规定,他今年的伐木面积是固定的,他想知道,对于指定的区域大小,在这么大的矩形区域内,最大的木材砍伐量是多少。输入:第 1 行有 2 个整数,长度 L 和宽度 W。第 2 行至第 L+1 行,每行有 W 个整数,分别表示对应的单位面积上的木材储量 A( 0<A<10 ) 。第 L+2 行有 2 个整数,分别是指定的区域大小的长度 a 和宽度 b。输出:输出一个整数 m,表示在指定大小的区域内,木材的最大砍伐量 m。样例输入:4 51 2 3 4 56 7 8 0 00 9 2 2 33 0 0 0 13 3样例输出:38数据范围1 < L,W < 500;1 < a < L ,1 < b < W 帮忙做一下,谢谢!
额,实在对不起,我是个学生,实在没有财富值,对不起了
展开
 我来答
物理公司的
2018-07-02 · TA获得超过5697个赞
知道大有可为答主
回答量:6105
采纳率:86%
帮助的人:1386万
展开全部
#include<iostream>
using namespace std;
int p[1001][1001],a,b;
int l,w; 
int main(){    
    cin>>a>>b;    
    for(int i=1;i<=a;i++){        
        for(int j=1;j<=b;j++){            
            cin>>p[i][j]; 
            p[i][j] = p[i-1][j]+p[i][j-1]-p[i-1][j-1]+p[i][j];//某一位置元素值  =  正左方元素值(如果存在)  + 正上方元素值(如果存在) - 左上角元素值(如果存在);
        } 
    } 
    cin>>l>>w;    
    int sum = -1;    
    for(int i=l;i<=a;i++){        
        for(int j=w;j<=b;j++){            
            int t=0;            
            if(i == l){
                t = p[i][j] - p[i][j-w]; 
            } else{
                t = p[i][j] - p[i][j-w] - p[i-l][j] + p[i-l][j-w]; 
            } 
            sum = t>sum?t:sum;
        } 
    } 
    cout<<sum;    return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式