import java.util.Scanner;
//变量定义的实在有点乱、懒得换了、估计也只有我自己能看懂。= =
/*二哥种花生
Description
二哥在自己的后花园里种了一些花生,也快到了收获的时候了。这片花生地是一个长度为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 。
*/
class Test2{
static int l, w, number, l1, w1, sum = 0;
static Scanner scanner;
public static void main(String args[]){
System.out.println("请输入长度L和宽度W(用空格隔开):");
scanner = new Scanner(System.in);
l = scanner.nextInt();
w = scanner.nextInt();
//判断输入是否满足要求,不满足直接退出
if( (l<0)||(l>1000)||(w<0)||(w>1000) )
System.exit(0);
System.out.println("输入的长度为:" + l + " 输入的宽度为:" + w);
int array[][] = new int[l][w];
for(int n = 0; n < l; n++){
for(int m = 0; m < w; m++){
if(m != (w-1)){ //question is here!!
number = (int)( 10*Math.random() );
array[n][m] = number;
System.out.print(number + " ");
}else{
number = (int)( 10*Math.random() );
array[n][m] = number;
System.out.println(number);
}
}
}//实现输出矩形区域内,花生的产量是多少
System.out.println("请输入长度、宽度。显示矩形区域内花生的产量会是多少??");
l1 = scanner.nextInt();
w1 = scanner.nextInt();
//判断是否超出矩形大小
if( (l1>l)||(l1<0)||(w1>w)||(w1<0))
System.exit(0);
System.out.println("选择土地的长度为:" + l1 + " 宽度为:" + w1);
//实现圈地
int l1_save = l1, w1_save = w1;
int loop_l, loop_w;
loop_l = l-l1+1;
loop_w = w-w1+1;
int sumnumber = 0;
int all_sum[] = new int[ (loop_l+1)*(loop_w+1) ]; //整块土地中有多少块小矩形
for(int num1 = 0; num1 < loop_l; num1++,l1_save++){
for(int num2 = 0; num2 < loop_w; num2++,w1_save++){
for(int n = num1; n < l1_save; n++)
for(int m = num2; m < w1_save; m++){
sum = sum + array[n][m];
}
all_sum[sumnumber] = sum; //每个圈地中的产量放入一维数组中
System.out.println( "第"+ (sumnumber+1) + "块矩形的产量为是" + all_sum[sumnumber] + " " );
sum = 0;
sumnumber++;
}
w1_save = w1;
}
//一维数组中找出最大的产量组
int size;
size = all_sum.length;
int max = 0;
for(int i = 0; i < size; i++){
if( all_sum[i] > max )
max = all_sum[i];
}
System.out.println("我总算算出了啃爹的最大产量矩形土地为:" + max);
}
}
/*
结果:
圈地想法:
*/