CCF模拟试题——最大的矩形 Java
Posted mulin1999
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CCF模拟试题——最大的矩形 Java相关的知识,希望对你有一定的参考价值。
我们先看一下题目:
|
我的解题算法思路是分别遍历每一个矩形快的高度,算出从该矩形块向右与右边每一个矩形块所能构成的最大矩形的面积,再取最大的矩形面积。
代码:
1 import java.util.Scanner; 2 3 public class Main 4 5 public static void main(String[] args) 6 Scanner sc = new Scanner(System.in); 7 int n=sc.nextInt(); 8 int num[]=new int[n]; 9 for(int i=0;i<n;i++) 10 num[i]=sc.nextInt(); 11 int sum=num[0]; //存最大的矩形面积 12 int sum_n; //存每次计算出的矩形面积 13 int temp; //存最小的矩形的高 14 for(int i=0;i<n;i++) 15 16 temp=num[i]; 17 for(int j=i+1;j<n;j++) 18 19 if(temp>=num[j]) 20 21 temp=num[j]; 22 sum_n=temp*(j-i+1); 23 if(sum_n>sum) 24 sum=sum_n; 25 26 else 27 28 sum_n=temp*(j-i+1); 29 if(sum_n>sum) 30 sum=sum_n; 31 32 33 34 System.out.println(sum); 35 36
再依次向右遍历时要先判断最小的矩形高,每次计算面积以最小的矩形高乘以累加的矩形底,然后与之前的最大矩形面积进行判断,比之前的大就将sum的值进行更新。
如果有哪里不理解的可以留言问我哦~
以上是关于CCF模拟试题——最大的矩形 Java的主要内容,如果未能解决你的问题,请参考以下文章