求助最后一个吸氧能过不吸氧TLE
查看原帖
求助最后一个吸氧能过不吸氧TLE
461740
XiRealina楼主2021/7/1 15:52
#include<bits/stdc++.h>
using namespace std;
int A[15][15],n,ans,R[5][15];
vector <int> q;
void fang(int x,int y)
{
	for(int i=1;i<=n;i++)	A[x][i]++,A[i][y]++;
	for(int i=1;i<=n;i++)
	{
		if(x+i<=n&&y+i<=n)A[x+i][y+i]++;
		if(x-i>=1&&y-i>=1)A[x-i][y-i]++;
		if(x+i<=n&&y-i>=1)A[x+i][y-i]++;
		if(x-i>=1&&y+i<=n)A[x-i][y+i]++;
	}
}
void na(int x,int y)
{
	for(int i=1;i<=n;i++)	A[x][i]--,A[i][y]--;
	for(int i=1;i<=n;i++)
	{
		if(x+i<=n&&y+i<=n)A[x+i][y+i]--;
		if(x-i>=1&&y-i>=1)A[x-i][y-i]--;
		if(x+i<=n&&y-i>=1)A[x+i][y-i]--;
		if(x-i>=1&&y+i<=n)A[x-i][y+i]--;
	}	
}
void search(int r,int t)
{
	if(t==n+1)	
	{
		if(ans<3)
		{
			for(int i=0;i<q.size();i++)	R[ans][i]=q[i];
		}
		ans++;
	}
	else
	{
		for(int i=1;i<=n;i++)
		{
			if(A[i][t]!=0)	continue;
			fang(i,t);
			q.push_back(i);
			search(r,t+1);
			na(i,t);
			q.pop_back();
		}
	}
}
int main()
{
	cin>>n;
	search(n,1);
	for(int i=0;i<=2;i++)
	{
		for(int j=0;j<n;j++)
		{
			cout<<R[i][j]<<" ";
		}
		cout<<endl;
	}
	cout<<ans;
	return 0; 
}
2021/7/1 15:52
加载中...