1656:Counting Black

来源:互联网 发布:淘宝怎么看下单顺序 编辑:程序博客网 时间:2024/03/29 20:16

题目链接:http://poj.org/problem?id=1656

方法:hash

思路:很简单的hash,注意方格是按照坐上的坐标定义的,然后根据规则染色就可以了。

难点:注意hash数组在何时清零很重要,本题的hash表不大,完全可以在main内声明的时候赋值为0,否则就要用到memset了

#include<cstdio>#include<iostream>#include<string>#include<cstring>using namespace std;const int MAX = 110;int main(){    int n;    while(~scanf("%d",&n))    {        int board[110][110] = {0};        while(n--)        {            string com;            int x,y,l;            cin>>com;            scanf("%d %d %d",&x,&y,&l);            if(com == "WHITE")            {                for(int i = x;i <= x+l-1;i++)                {                    for(int j = y;j <= y+l-1;j++)                        board[i][j] = 0;                }            }            if(com == "BLACK")            {                for(int i = x;i <= x+l-1;i++)                {                    for(int j = y;j <= y+l-1;j++)                        board[i][j] = 1;                }            }            int num = 0;            if(com == "TEST")            {                for(int i = x;i <= x+l-1;i++)                {                    for(int j = y;j <= y+l-1;j++)                    {                        if(board[i][j] == 1)                            num++;                    }                }                printf("%d\n",num);            }        }    }}


0 0
原创粉丝点击