求调140行市山代码
查看原帖
求调140行市山代码
693552
xingze楼主2024/10/4 10:53
#include <iostream>
using namespace std;
long long n,m,k=0,f=0;
long long used=0;
string s[1050];
bool op(string a)
{
	if (a[0]==a[5]&&a[1]==a[4]&&a[2]==a[3])
		return true;
	return false;
}
int main ()
{
	cin >> n>>m;
	for (int i = 1;i<=n;i++)
	{
		cin >> s[i];
	}
	for (int i = 1;i<=n;i++)
	{
		for (int j = 0;j<s[i].size();j++)
		{
			if (s[i][j]=='.')
				k++;
			if (s[i][j]=='X')
				f++;
		}
	}
	if(m==0)
	{
		bool flag=true;
		for (int i = 1;i<=n;i++)
		{
			if(op(s[i]))
				flag=true;
			else
				flag=false;
		}
		if(flag==true)
		{
			for (int i = 1;i<=n;i++)
			{
				cout << s[i]<<endl;
			}
			return 0;
		}
		else
		{
			cout << "Impossible"<<endl;
			return 0;
		}
	}
	if (k<m||(f+m)%2!=0)
	{
		cout << "Impossible"<<endl;
		return 0;
	}
	for (int i = 1;i<=n;i++)
	{
		for (int j = 0;j<s[i].size();j++)
		{
			if(s[i][j]=='X')
			{
				if (m>used&&j==0&&s[i][5]=='.')
				{
					s[i][5]='X';
					used++;
				}
				if (m>used&&j==1&&s[i][4]=='.')
				{
					s[i][4]='X';
					used++;
				}
				if (m>used&&j==2&&s[i][3]=='.')
				{
					s[i][3]='X';
					used++;
				}
				if (m>used&&j==3&&s[i][2]=='.')
				{
					s[i][2]='X';
					used++;
				}
				if (m>used&&j==4&&s[i][1]=='.')
				{
					s[i][1]='X';
					used++;
				}
				if (m>used&&j==5&&s[i][0]=='.')
				{
					s[i][0]='X';
					used++;
				}
			}
		}
	}
	if (used==m)
	{
		for (int i = 1;i<=n;i++)
		{
			cout << s[i]<<endl;
		}
		return 0;
	}
	else if(used<m)
	{
		for (int i = 1;i<=n;i++)
		{
			for (int j = 0;j<s[i].size();j++)
			{
				if(s[i][j]=='.')
				{
					if (m>used&&j==0&&s[i][5]=='.')
					{
						s[i][0]='X';
						s[i][5]='X';
						used+=2;
					}
					if (m>used&&j==1&&s[i][4]=='.')
					{
						s[i][1]='X';
						s[i][4]='X';
						used+=2;
					}
					if (m>used&&j==2&&s[i][3]=='.')
					{
						s[i][2]='X';
						s[i][3]='X';
						used+=2;
					}
				}
			}
		}
	}
	for (int i = 1;i<=n;i++)
	{
		cout << s[i]<<endl;
	}
	return 0;
}

已经调不动了,求dalao帮忙
记录

2024/10/4 10:53
加载中...