hdu5319&hdu多校集训第四题

来源:互联网 发布:心理学电脑软件 编辑:程序博客网 时间:2024/06/05 08:27

题目大意:给一个图,可以红色‘\‘这样刷,蓝色‘/‘这样刷,一个有两种颜色就变成绿色。

解题思路:每一根斜线,挨着找即可。

注意点:1.不是一个正方形,可以是一个矩形

        2.一根斜线不用把整个图形贯穿完,可以只画一部分

#include <stdio.h>
#include <string.h>
int main()
{
    char str[50][50];
    int t, n, m, s, i, j, ii, jj, flag;

    scanf("%d", &t);
    while (t)
    {
        t--;
        scanf("%d", &n);
        for (int i = 0; i < n; i ++)
        {
            scanf("%s", str[i]);
        }
        m = strlen(str[n-1]);

        s = 0;
        i = 0;
        j = m - 1;
        while (i < n)
        {

            flag = 0;
            ii = i;
            jj = j;
            while (ii < n && jj < m)
            {

                if (str[ii][jj] == 'R' || str[ii][jj] == 'G')
                {
                    if (!flag)
                    {
                        s++;
                        flag = 1;
                    }
                }
                else
                {
                    if (flag)
                    {
                        flag = 0;
                    }
                }
                ii++;
                jj++;
            }
            if ((!i) && j)
                j--;
            else
                i++;
        }
        i = 0;
        j = 0;
        while (j < m)
        {
            flag = 0;
            ii = i;
            jj = j;
            while (ii >= 0 && jj < m)
            {
                if (str[ii][jj] == 'B' || str[ii][jj] == 'G')
                {
                    if (!flag)
                    {
                        s++;
                        flag = 1;
                    }
                }
                else
                {
                    if (flag)
                        flag = 0;
                }
                ii--;
                jj++;
            }
            if ((!j) && (i < n-1))
                i++;
            else
                j++;
        }
        printf("%d\n", s);
    }
    return 0;
}


0 0
原创粉丝点击