题目
源地址:
http://codeforces.com/problemset/problem/7/A
理解
同样是理解题- -。
给定一个被黑白棋子占满的棋盘,能进行的操作为将一行或者一列由黑色变白色,问最少需要多少步,能将棋盘全都变为白色。
一开始感觉应该用DFS来做,但是想了想,其实用模拟就能搞定。思路很简单,只要用两层循环,由上到下,由左到右,判断是否为B
。如果是B
,则有tmp++;如果不是,则继续。再然后,判断tmp是不是等于8,如果是,则进行一次行的翻转,如果不是,则列的翻转数为tmp。
代码
#define MAXN 8
char chess[MAXN][MAXN];
int i,j;
int c=0,r=0;
int tmp=0;
int ans;
void init()
{
for(int i=0; i<=7; i++)
scanf("%s", &chess[i]);
}
int main(int argc, char const *argv[])
{
init();
for(int i=0; i<=7; i++)
{
tmp=0;
for(j=0; j<=7; j++)
{
if(chess[i][j]=='B')
tmp++;
}
if(tmp==MAXN)
{
c++;
}
else
r=tmp;
}
ans=c+r;
printf("%d\n", ans);
return 0;
}
更新日志
- 2014年11月13日 已AC。