貪欲
class ColoredStrokes {
public:
int getLeast(vector <string> P)
{
int cnt = 0;
const int h = P.size(), w = P[0].size();
bool b[h][w];
bool r[h][w];
fill(&b[0][0], &b[h - 1][w], false);
fill(&r[0][0], &r[h - 1][w], false);
for (int i = 0; i < (int)P.size(); ++i) {
for (int j = 0; j < (int)P[i].size(); ++j) {
if (b[i][j]) continue;
if (P[i][j] == 'B' || P[i][j] == 'G') ; else continue;
++cnt;
for (int k = i; k < (int)h; ++k) {
if (P[k][j] == 'B' || P[k][j] == 'G') ; else break;
b[k][j] = true;
}
}
}
for (int i = 0; i < (int)P.size(); ++i) {
for (int j = 0; j < (int)P[i].size(); ++j) {
if (r[i][j]) continue;
if (P[i][j] == 'R' || P[i][j] == 'G') ; else continue;
++cnt;
for (int k = j; k < (int)w; ++k) {
if (P[i][k] == 'R' || P[i][k] == 'G') ; else break;
r[i][k] = true;
}
}
}
return cnt;
}
};