SRM 605 D2 L2:AlienAndGame

2014-11-24 08:28:25 · 作者: · 浏览: 0

枚举可能的正方形边长值。

代码如下:

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include 
          
            #include
            #include 
            
              #include 
             
               #include 
              
                #include 
               
                 #include 
                
                  using namespace std; /*************** Program Begin **********************/ class AlienAndGame { public: int getNumber(vector 
                 
                   board) { int rows = board.size(); int cols = board[0].size(); int n = min(board.size(), board[0].size()); for (; n >= 1; n--) { // 从大到小枚举各个可能的 正方形边长 for (int j = 0; j < rows - n + 1; j++) { for (int k = 0; k < cols - n + 1; k++) { // 判断以board[j][k]为正方形左上顶点时是否有边长为n的正方形 bool flag_row; for (int s = 0; s < n; s++) { flag_row = true; for (int t = 0; t < n; t++) { if ( board[j+s][k] != board[j+s][k+t] ) { flag_row = false; break; } } if (!flag_row) { break; } } if (flag_row) { return n * n; } } } } return 1; } }; /************** Program End ************************/