#include<iostream>
using namespace std;
char f[51][51];
int N, M, sum=10000;
int main()
{
int temp = 0;
cin >> N >> M;
for (int i = 0; i < N; i++)
for (int j = 0; j < M; j++)
cin >> f[i][j];
for (int i = 1; i < N - 1; i++)
for (int s = i + 1; s <= N - 1; s++)
{
for (int j = 1; j < i; j++)
for (int k = 0; k < M; k++)
if ('W' != f[j][k])
temp++;
for (int j = i; j < s; j++)
for (int k = 0; k < M; k++)
if ('B' != f[j][k])
temp++;
for (int j = s; j < N - 1; j++)
for (int k = 0; k < M; k++)
if ('R' != f[j][k])
temp++;
if (temp < sum)
sum = temp;
temp = 0;
}
for (int i = 0; i < M; i++)
if ('W' != f[0][i])
sum++;
for (int i = 0; i < M; i++)
if ('R' != f[N - 1][i])
sum++;
cout << sum;
return 0;
}
洛谷P3392 涂国旗进阶解法
最新推荐文章于 2024-04-03 21:11:13 发布
本文介绍了一段C++代码,通过四个嵌套循环遍历二维字符数组,计算从左上角到右下角经过'W'(白色)、'B'(黑色)和'R'(红色)字符的最短路径。算法优化了路径计数,找出并更新最少步数。
558

被折叠的 条评论
为什么被折叠?



