题目描述 Description
某同学考试,在N*M的答题卡上写了A,B,C,D四种答案。
他做完了,又不能交,一看表,离打铃还有N久。
他开始玩一个游戏:选一个格子X,Y,从这个格子出发向4个方向找相同的选项,找到的再如此。
求形成的图形的面积。(一个选项占一个单位面积)
输入描述 Input Description
N M X Y
答题卡(矩阵)
输出描述 Output Description
面积
样例输入 Sample Input
3 3 1 2
A C B
C C C
D C A
样例输出 Sample Output
5
数据范围及提示 Data Size & Hint
N,M<=15.
对于33%数据,只有A。
#include <iostream>
#include <cstdio>
using namespace std;
char map[16][16]={0};
char a[16][16]={0};
int M,N,x,y;
int sum=0;
char cc;
void bfs(int xx, int yy)
{
if(xx>=0 && xx<N && yy>=0 &&yy<M &&map[xx][yy]==cc)
{
sum++;
map[xx][yy]='1';
bfs(xx-1,yy);
bfs(xx+1,yy);
bfs(xx,yy-1);
bfs(xx,yy+1);
}
}
int main()
{
scanf("%d%d%d%d ", &N, &M, &x, &y);
for(int i=0; i<N;i++)
{
gets(a[i]);
}
for(int i=0;i<N;i++)
{
int k=0;
for(int j=0;a[i][j];j++)
{
if(a[i][j]!=' ')
map[i][k++]=a[i][j];
}
}
cc=map[x-1][y-1];
bfs(x-1,y-1);
printf("%d", sum);
return 0;
}