1、问题描述:
给定一个n*n的围棋盘,交叉点上分布着黑,白子或空白(分别用字符b,w和 n表示),
相同颜色的棋子在同行或同列相连属于同一块棋,请遍历整个围棋盘,计算黑白棋各有几块。
输入:第一行只有一个整数n(0<n<20),表示棋盘的大小。
接下来n行中,包含n个字符,分别用字符b,w和 n表示黑,白子或空白。
输出:两个整数,分别表示黑,白棋各有几块。 打印出属于同一区域的棋子坐标(可选择)。
2、样例输入:
6
bbbnww
nbnnwn
bbwwnn
bwwnnw
bbbbww
wwnbbw
3、样例输出:
1 4
4、算法思想:
深搜或广搜均可
5、代码如下:
#include<iostream>
#include<cstdio>
#include <vector>
#include <opencv2/opencv.hpp>
#include <cv.h>
using namespace std;
using namespace cv;
const int MAX = 20;
char m_map[MAX][MAX];
bool lib[MAX][MAX]; //标记该点是否已经来过
int DicX[4] = {0, 1, 0, -1}; //向东南西北四个方向移动,x坐标相当于行坐