dfs为什么是错的呀,有大佬可以告诉我吗
  • 板块P3392 涂国旗
  • 楼主loliconsk
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/2/7 17:18
  • 上次更新2023/11/5 03:35:51
查看原帖
dfs为什么是错的呀,有大佬可以告诉我吗
455712
loliconsk楼主2021/2/7 17:18
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
char s[51][51];
int b[3] = { 1,1,1 };	int r, c;
int mini = 9999;
void dfs(int sum,int cur)
{
	if (cur ==  3)
	{
		if (sum == r)
		{
			int cnt = 0;
			for (int i = 0; i < b[0]; i++)
			{
				for (int j = 0; j < c; j++) if (s[i][j] != 'W')cnt++;
			}
			for (int i = b[0]; i <b[0]+ b[1]; i++)
			{
				for (int j = 0; j < c; j++) if (s[i][j] != 'B')cnt++;
			}
			for (int i = b[0] + b[1]; i <b[0]+b[1]+ b[2]; i++)
			{
				for (int j = 0; j < c; j++) if (s[i][j] != 'R')cnt++;
			}
			mini = min(mini, cnt);
			return;
		}
		else return;
	}
	for (int i = 1; i <= r - 2; i++)
	{
		b[cur] = i;
		dfs(b[0] + b[1] + b[2], cur + 1);
	}
}
int main(void)
{
	cin >> r >> c;
	getchar();
	for (int i = 0; i < r; i++)
	{
		for (int j = 0; j < c; j++)
			scanf("%c", &s[i][j]);
		getchar();
	}
	dfs(b[0] + b[1] + b[2],0);
	cout << mini<<" "<<endl;
	return 0;
}
2021/2/7 17:18
加载中...