翻卡片:翻转1张B卡片为A后求最大连通A数量
类型:程序题

蓝桥杯青少组C++编程国赛题:翻卡片

题目描述

小蓝在玩翻卡片游戏,每张卡片一面写着大写字母"A",另一面写着大写字母"B"。首先将卡片排成一个N*N的矩阵,有的卡片是A面朝上,有的卡片是B面朝上。

现给定N的值,及N*N矩阵中每张卡片的状态,请你帮助小蓝挑选一张B面的卡片,翻转成A面,使得翻转后的上、下、左、右四个方向相连的A面卡片最多,并将相连最多的卡片数量输出。

示例

N=3,3*3的矩阵中的卡片状态如下:

A B B
A B A
B A B

选择第二行第二列的B面卡片,翻转为A面,可以使翻转后四个方向相连的A面卡片最多,为5张,示意如下:

A B B
A A A
B A B
// 连通的A共有5个:(0,0),(1,0),(1,1),(1,2),(2,1)

输入描述

第一行输入一个正整数N(2≤N≤50),表示矩阵的行数和列数。 第二行开始输入N行,每行输入N个字符('A'或者'B'),表示矩阵中卡片状态,字符之间以一个空格隔开。

输出描述

输出一个整数,表示翻转后矩阵中上、下、左、右四个方向相连的最多A面卡片张数。

样例输入

3
A B B
A B A
B A B

样例输出

5
代码编辑器 加载中...
测试用例(F10) 运行测试(F11) 提交答案(F12)
测试用例输入
{{resultStatus.text}}