28分求助
查看原帖
28分求助
1302337
mishearstar楼主2024/11/9 21:32
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;

#define int long long
const int N =1e2+10,M = 6e4;
char a[N][N];
signed main()
{
	int n,m;
	cin >>n >>m;

	for(int i = 1; i <= n; i++)cin >>a[i] + 1;
	int res = 1e9;
	int cnt = 0;
	//cnt是第一行和最后一行必须修改的数量
	for(int i = 1; i < m; i++){
		if(a[1][i] != 'W') cnt++;
		if(a[n][i] != 'R') cnt++;
	}
	
	int ans = 0;//w,b,r为白色,蓝色,红色行数
	for(int w = 1; w <= n-2; w++)
	{
		
		for(int b = 1; b <=n-2 ; b++){
			if(w + b > n-1) break;
			ans = 0;
			for(int i = 2; i <= w; i++){
				for(int j = 1; j <= m; j++){
					if(a[i][j]  != 'W') ans++;
				}
			} //白色
			//cout <<ans<<" ";
			for(int i = w+1; i <= b + w; i++){
				for(int j = 1; j <= m; j++){
					if(a[i][j] != 'B') ans++;
				}
			}
			//cout <<ans<<" ";
			for(int i = w+b+1; i <= n-1; i++){
				for(int j = 1; j <= m; j++){
					if(a[i][j] != 'R') ans++;
				}
			}
			//cout <<ans<<" ";
			res = min(res,ans);
		}
	}
	//cout <<cnt<<" ";
	cout <<res+cnt;
	return 0;
}
2024/11/9 21:32
加载中...