#include <string>
#include <vector>
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
class ChessFloor {
public:
int minimumChanges(vector <string> floor);
};
int ChessFloor::minimumChanges(vector <string> floor)
{
int i, j, b, w;
int best, nc;
/* Sentinelize best so that it is bigger than any legal answer. */
best = floor.size() * floor.size() + 1;
/* Enumerate all combinations of "black" and "white" */
for (b = 'a'; b <= 'z'; b++) {
for (w = 'a'; w <= 'z'; w++) {
if (b != w) {
/* For each of these, calculate the number of squares
that you have to change to make it work. */
nc = 0;
for (i = 0; i < floor.size(); i++) {
for (j = 0; j < floor.size(); j++) {
if ((i+j)%2 == 0 && floor[i][j] != b) nc++;
if ((i+j)%2 == 1 && floor[i][j] != w) nc++;
}
}
/* Keep track of the minimum */
if (nc < best) best = nc;
}
}
}
/* Return the minimum */
return best;
}
|