站外题(八皇后),求助,悬关
  • 板块题目总版
  • 楼主l_615
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/9/30 11:07
  • 上次更新2023/11/2 17:01:31
查看原帖
站外题(八皇后),求助,悬关
622724
l_615楼主2023/9/30 11:07

链接

#include<bits/stdc++.h>
using namespace std;
int ch[10][10],x[10],y[10],a[30],b[10],n;
void print()
{
	n++;
	printf("No. %d\n",n);
	for(int i=1;i<=8;i++)
	{
		for(int j=1;j<=8;j++)
		{
			printf("%d ",ch[i][j]);
		}printf("\n");
	}
}
void dfs(int tx,int ty,int t)
{
	ch[tx][ty]=1;
	t++;
	if(t==8)
	{
		print();
		t--;
		return;
	}
	x[tx]=1;
	y[ty]=1;
	a[tx-ty+10]=1;
	b[tx+ty]=1;
	for(int i=tx+1;i<=8;i++)
	{
		for(int j=1;j<=8;j++)
		{
			if(x[i]==0&&y[j]==0&&a[i-j+10]==0&&b[i+j]==0)
			{
				dfs(i,j,t);
			}
		}
	}
	ch[tx][ty]=0;
	t--;
	x[tx]=0;
	y[ty]=0;
	a[tx-ty+10]=0;
	b[tx+ty]=0;
}
int main()
{
	for(int i=1;i<=8;i++)
	{
		dfs(1,i,0);
	}
}
2023/9/30 11:07
加载中...