N皇后(dfs回溯)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[10];
ll n,cnt,sum=1;

bool check(ll x,ll y)
{
	for(ll i=1;i<=x;i++)
	{
		if(a[i]==y)return false;
		else if(i+a[i]==x+y)return false;
		else if(i-a[i]==x-y)return false;
	}
	return true;
}

void print()
{
	for(ll i=1;i<=n;i++)
		cout<<a[i]<<" ";
	cout<<endl;
}

void dfs(ll row)
{
	if(row==n+1)
	{
		print();
		cnt++;
		return;
	}
	for(ll j=1;j<=n;j++)
	{
		if(check(row,j))
		{
			a[row]=j;
			dfs(row+1);
			a[row]=0;
		}
	}	
}

int main()
{
	cin>>n;
	dfs(1);
	cout<<cnt;
	return 0;
}
全部评论

相关推荐

在看数据的傻狍子很忙碌:学生思维好重,而心很急,自己想想真的能直接做有难度的东西吗?任何错误都是需要人担责的,你实习生可以跑路,你的同事领导呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务