用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 帮忙做一下,谢谢!
额,实在对不起,我是个学生,实在没有财富值,对不起了 展开
额,实在对不起,我是个学生,实在没有财富值,对不起了 展开
1个回答
展开全部
#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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询