POJ1656

来源:互联网 发布:域名icp备案查询 编辑:程序博客网 时间:2024/05/16 16:06

POJ1656 计算黑格

有一个100*100的方格(左上角为(1,1)格子,右下角为(100,100)格子),初始全为白格子,且有三种命令:

WHITE x y l 表以(x,y)为左上角的长宽为l的正方形全涂白,

BLACK x y l 表以(x,y)为左上角的长宽为l的正方形全涂黑,

TEST x y l 表计算(x,y)为左上角的长宽为l的正方形中有多少个小黑格。

输入:第一行一个T,表以下有T行,每行一条命令,但是只有遇到TEST命令才用输出

输出:对于每条TEST命令输出小黑格的个数

解:本题数据简单,命令都合法,而且数据规模很小,直接模拟就行了。

代码:

#include <cstdio>#include <cstring>using namespace std;const int maxn=110;int a[maxn][maxn]; int main(){   char s[100];    intn;   memset(a ,0,sizeof(a));   scanf("%d",&n);    intx,y,l;   while(n--)    {       scanf("%s%d%d%d",s,&x,&y,&l);       int sign;       if(s[0]=='B')sign=1;       else if(s[0]=='W')sign=0;       if(s[0]!='T')           for(int i=x; i<=x+l-1; i++)           {                for(int j=y; j<=y+l-1; j++)                {                    a[i][j]=sign;                }           }       else       {   int num=0;           for(int i=x; i<=x+l-1; i++)           {                for(int j=y; j<=y+l-1; j++)                {                    if(a[i][j]==1)num++;                }           }           printf("%d\n",num);       }    }   return 0;}


0 0
原创粉丝点击