| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 10360 | Accepted: 6691 |
Description

1. WHITE x, y, L // Paint a white square on the board,
// the square is defined by left-top grid (x, y)
// and right-bottom grid (x+L-1, y+L-1)
2. BLACK x, y, L // Paint a black square on the board,
// the square is defined by left-top grid (x, y)
// and right-bottom grid (x+L-1, y+L-1)
3. TEST x, y, L // Ask for the number of black grids
// in the square (x, y)- (x+L-1, y+L-1)
Input
Output
Sample Input
5 BLACK 1 1 2 BLACK 2 2 2 TEST 1 1 3 WHITE 2 1 1 TEST 1 1 3
Sample Output
7 6
题意:
对于一个100*100棋盘,进行下列三种操作
BLACK x y l 将(x,y)为左上角,边长为l的正方形涂黑
WHITE x y l 将(x,y)为左上角,边长为l的正方形涂白
TEST x y l 问(x,y)为左上角,边长为l的正方形有多少个黑色格子
参考代码:
#include <iostream>
#include <string.h>
using namespace std;
#define MAX 100
int main(){
int map[MAX][MAX];
int t,x,y,l;
char s[20];
while (cin>>t){
memset(map,0,sizeof(map));
while (t--){
cin>>s>>x>>y>>l;
if (strcmp(s,"BLACK")==0){
for (int i=x;i<x+l;i++){
for (int j=y;j<y+l;j++){
map[i][j]=1;
}
}
}
if (strcmp(s,"WHITE")==0){
for (int i=x;i<x+l;i++){
for (int j=y;j<y+l;j++){
map[i][j]=2;
}
}
}
if (strcmp(s,"TEST")==0){
int count=0;
for (int i=x;i<x+l;i++){
for (int j=y;j<y+l;j++){
if (map[i][j]==1)
count++;
}
}
cout<<count<<endl;
}
}
}
return 0;
}
原文地址:http://blog.csdn.net/codeforcer/article/details/42266659