求助P2040
  • 板块学术版
  • 楼主liaoyichen
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/7/28 17:55
  • 上次更新2023/11/4 12:50:49
查看原帖
求助P2040
486675
liaoyichen楼主2021/7/28 17:55

原题

#include<bits/stdc++.h>
using namespace std;
bool a[5][5];
int ans=1000000,dx[5]={0,0,0,1,-1},dy[5]={0,1,-1,0,0};
void cz(int x,int y)
{	for(int i=1;i<=4;i++)
	{	a[x+dx[i]][y+dy[i]]=!a[x+dx[i]][y+dy[i]];
	}
	return;
}
void dfs(int k)
{	if(k>=ans)
	{	return;
	}
	int sum=0;
	for(int i=1;i<=3;i++)
	{	for(int j=1;j<=3;j++)
		{	if(a[i][j]==1)
			{	sum++;
			}
		}
	}
	if(sum==9)
	{	ans=min(ans,k);
	}
	for(int i=1;i<=3;i++)
	{	for(int j=1;j<=3;j++)
		{	a[i][j]=!a[i][j];
			cz(i,j);
			dfs(k+1);
			a[i][j]=!a[i][j];
			cz(i,j);
		}
	}
	return;
}
int main()
{	for(int i=1;i<=3;i++)
	{	for(int j=1;j<=3;j++)
		{	cin>>a[i][j];
			//cout<<!a[i][j];
		}
	}
	dfs(0);
	cout<<ans;
	return 0;
}
2021/7/28 17:55
加载中...