2009-10-02 22:57:12來源不明

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;  
}