枚举 求大佬一救
查看原帖
枚举 求大佬一救
750534
jackliu2007楼主2023/8/23 14:55
#include<bits/stdc++.h>
using namespace std;

int n,m,w[60],b[60],r[60],minn=2525,ans;
char maps[60][60];

int main(){
	
	cin>>n>>m;
	for (int i=1;i<=n;i++)
		for (int j=1;j<=m;j++){
			cin>>maps[i][j];
			if (maps[i][j]=='R'){
				w[i]++;
				b[i]++; 
			}
			if (maps[i][j]=='W'){
				r[i]++;
				b[i]++; 
			}
			if (maps[i][j]=='B'){
				r[i]++;
				w[i]++; 
			}//记录每一行如果要涂成w/b/r要多少次 
		}//Ex:例题数据可得人w[2]=3 意为如果第二行要全涂成白色需要三次 
	
	for (int i=1;i<=n-2;i++){//w 1到i
		ans=0;//分边界讨论 w/b/r后面跟的是范围 
		for (int j=i+1;j<=n-1;j++){//b i+1到j  r j+1到n 
			int k;
			for (k=1;k<=i;k++)//w
				ans+=w[k];
			for (k=i+1;k<=j;k++)//b
				ans+=b[k];
			for (k=j+1;k<=n;k++)//r
				ans+=r[k];
			minn=min(minn,ans);//更新答案 
		}
	}
	cout<<minn;
	
	
	return 0;
} 

只对了前三个

求助

2023/8/23 14:55
加载中...