题目

源地址:

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。