CSAPC'08 Problem Setter: Tmt 區域 Area
作法 :模仿最大區域
碰壁的話 則縮小搜尋範圍
時間複雜度O(N^4)
/*********************************************************/
#include<stdio.h>
#include<stdlib.h>
main()
{
int N,M;
while(scanf("%d %d",&N,&M)==2)
{
int map[102][102]={0};
int a,b,c,d;
for(a=0;a<N;a++)
for(b=0;b<M;b++)
scanf("%d",&map[a][b]);
int MAX=0;
for(a=0;a<N;a++) /*找X*/
for(b=0;b<M;b++) /*找Y*/
{
int find=0;
for(c=0;c<N-a;c++)
for(d=0;d<M-b-find;d++)
{
if(map[a+c][b+d]<=map[a+c-1][b+d]&&c!=0)
{find=M-b-d;break;}
if(map[a+c][b+d]<=map[a+c][b+d-1]&&d!=0)
{find=M-b-d;break;}
if((c+1)*(d+1)>MAX)
MAX=(c+1)*(d+1);
}
}
printf("%d\n",MAX);
}
return 0;
}