SRM605 div2 med AlienAndGame

TopCoder Statistics - Match Overview

解説

1 * 1, 2 * 2, ...の正方形が作れるかどうか順に調べた。

左からi右からjのマスが正方形の左上として調べた。

コード

class AlienAndGame {
public:
  int getNumber(vector <string> board) {
    int H = board.size();
    int W = board[0].length();
    int ret = 1;
    FOR(s,1,W+1) {
      FOR(i,0,H) {
        FOR(j,0,W) {
          bool ok = true;
          FOR(k,0,s) {
            if(i + k >= H) {
              ok = false;
              break;
            }
            if(!(board[i+k].substr(j, s) == string(s, 'W') || board[i+k].substr(j, s) == string(s, 'B'))) {
              ok = false;
              break;
            }
          }
          if(ok) ret = s;
        }
      }
    }
    return ret * ret;
  }
};