70分被TTTT T~T
查看原帖
70分被TTTT T~T
1168588
FASTergood楼主2024/6/29 09:26
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 10010;
bool line[N], uli[N], rli[N];
char h[N][N];
int n, m,cnt=0;
void find(int x)
{
	if (n == x)
	{
		cnt++;
	}
	for (int i = 0;i < n;i++)
	{
		if (!line[i] && !uli[x + i] && !rli[n - x + i]&&h[x][i]!='.')
		{
			//h[x][i] = '#';
			line[i] = uli[x + i] = rli[n - x + i] = true;
			find(x+1);
			line[i] = uli[x + i] = rli[n - x + i] = false;

		
		}
	}

}
int main()
{
	cin >> n;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++)
			cin>>h[i][j];

	find(0);
	cout << cnt << endl;
	return 0;

}
2024/6/29 09:26
加载中...