您的位置:首页 > 运维架构

TopCoder-SRM631-DIV1-250pt-TaroJiroGrid-对解空间分析

2014-10-27 21:31 239 查看
http://community.topcoder.com/stat?c=problem_statement&pm=13393&rd=16062

这道题考察对解的可能的分析。一旦想到将n/2与n/2+1行操作为不同颜色就能得到满足条件的解这个结论,这道题目就非常简单了。

最差的情况2次操作可以完成,所以我们只需要枚举0次、1次操作能否完成即可。

int m,n;
class TaroJiroGrid
{
public:
vector <string> g;
bool Check(){
for(int i=0;i<n;i++) {
char last=0;
int cur=0;
for(int j=0;j<n;j++){
if (g[j][i]==last) cur++;
else {last=g[j][i];cur=1;}
if (cur>n/2) {
return false;
}
}
}
return true;
}
int getNumber(vector <string> grid)
{
this->g=grid;
n=g.size();
if (Check()) {
return 0;
}
for(int i=0;i<n;i++){
g=grid;
for(int j=0;j<n;j++) {
g[i][j]='W';
}
if (Check()){return 1;}
for(int j=0;j<n;j++) {
g[i][j]='B';
}
if (Check()){return 1;}
}
return 2;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: