T了最后一个点,求优化建议
查看原帖
T了最后一个点,求优化建议
178128
杨凯楼主2020/9/20 21:39
#include<bits/stdc++.h>
#define maxx 100
using namespace std;
int n,num,sum;
int r[maxx];
bool check(int c1,int r1,int c2,int r2)
{
	if(c1==c2)return false;
	else
	{
		if(c1==r1&&c2==r2)return false;
		if(c1>r1&&c2>r2&&(c1-r1==c2-r2))return false;
		if(c1<r1&&c2<r2&&(c1-r1==c2-r2))return false;
		if(c1+r1==c2+r2)return false;
		return true;
	}
}
void queen(int nn)
{
	if(nn==n+1)
	{
		sum++;
		if(sum>3)return;
		for(int i=1;i<=n;i++)cout<<r[i]<<" ";
		cout<<endl;
		return ;
	}
	for(int i=1;i<=n;i++)
	{
		int j=1e9;
		for(j=1;j<nn;j++)
		{
			if(!check(i,nn,r[j],j))
			{
			  break;
		    } 
		}
		if(j<nn)continue;
		else 
		{
			r[nn]=i;
			queen(nn+1);
	    }
	}
}
int main()
{
   
	cin>>n;
    queen(1);
    cout<<sum;
    return 0;
} 
2020/9/20 21:39
加载中...