AOJ1114 Get a Rectangular Field
問題リンク Get a Rectangular Field
- 概要
5*5のマスに0か1が書かれている。1のみを含む長方形を作るとき、できる最大面積を答えよ。
- 解法
問題のサイズが非常に小さいので、(i, j)を左上のマスとして幅w, 高さhの長方形が作れるかというのを全て試すことができます。
※より厳しい条件の問題がAOJ0116にあります
- ソース
import java.util.Scanner; //Get a Rectangular Field public class AOJ1114 { void run(){ Scanner sc = new Scanner(System.in); int T = sc.nextInt(); while(T--!=0){ int[][] a = new int[5][5]; for(int i=0;i<5;i++)for(int j=0;j<5;j++)a[i][j]=sc.nextInt(); int max = 0; for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ for(int h=i;h<5;h++){ for(int w=j;w<5;w++){ boolean f = true; for(int n=i;n<=h;n++){ for(int m=j;m<=w;m++){ if(a[n][m]==0){ f = false;break; } } } if(f)max = Math.max(max, (h-i+1)*(w-j+1)); } } } } System.out.println(max); } } public static void main(String[] args) { new AOJ1114().run(); } }