Oops的周末一题(兔哥哥儿种花生)
非常高兴又可以多一块内容了。这里非常感谢“Oops”学弟,特别说明本部分是小白的学弟“Oops”同学独家赞助。也欢迎更多的小伙伴来分享你的学习成果
兔哥哥儿种花生
问题描述
兔哥哥儿在自己的后花园里种了一些花生,也快到了收获的时候了。这片花生地是一个长度为L、宽度为W的矩形,每个单位面积上花生产量都是独立的。他想知道,对于某个指定的区域大小,在这么大的矩形区域内,花生的产量最大会是多少。
Input Format
第1行有2个整数,长度L和宽度W。
第2行至第L+1行,每行有W个整数,分别表示对应的单位面积上的花生产量A( 0≤A<10
)。
第L+2行有2个整数,分别是指定的区域大小的长度a和宽度b。
Output Format
输出一个整数m,表示在指定大小的区域内,花生最大产量为m。
Sample Input
4 5
1 2 3 4 5
6 7 8 0 0
0 9 2 2 3
3 0 0 0 1
3 3
Sample Output
38
样例解析
样例解释
左上角:38 = (1+2+3) + (6+7+8) + (0+9+2)
数据范围
对于30%的数据: 1≤L,W≤100;
对于100%的数据:1≤L,W≤1000。
全部区域大小满足:1≤a≤L,1≤b≤W。
解析
数组前端和
代码
1#include<cstdio>
2#include<cstdlib>
3#include<iostream>
4
5using namespace std;
6
7int s[1002][1002],p[1002][1002];
8
9int main(){
10 int l,w;
11 cin>>l>>w;
12 int i,j,tmp;
13 for(i=1;i<=l;i++){
14 for(j=1;j<=w;j++){
15 cin>>p[i][j];
16 }
17 }
18 for(i=1;i<=l;i++){
19 for(j=1;j<=w;j++){
20 s[i][j]=p[i][j]-s[i-1][j-1]+s[i-1][j]+s[i][j-1];
21 }
22 }
23 int a,b,m=0,t;
24 cin>>a>>b;
25 /*
26 for(i=1;i<=l;i++){
27 for(j=1;j<=w;j++){
28 printf("%4d",s[i][j]);
29 }cout<<endl;
30 }*/
31 for(i=a;i<=l;i++){
32 for(j=b;j<=w;j++){
33 t=s[i][j]+s[i-a][j-b]-s[i][j-b]-s[i-a][j];
34 if(t>m){
35 m=t;
36 }
37 }
38 }
39 cout<<m;
40 //*/
41 return 0;
42}
![](http://n4.ikafan.com/assetsj/blank.gif)
相关推荐
赞 (0)