UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#213051#389. 八皇后问题walle2012Judgement Failed//C++657b2024-11-04 22:25:032024-11-04 22:25:04

answer

#include <bits/stdc++.h>
using namespace std;
int vis1[110],vis2[110],vis3[110];
int ret[10],num;
void dfs(int x)
{
	if(x==9)
	{
		num++;
		printf("No. %d\n",num);
		for(int i=1;i<=8;i++)
		{
			for(int j=1;j<=8;j++)
			{
				if(ret[j]==i)
				{
					printf("1 ");
				}
				else
				{
					printf("0 "); 
				}
			}
			printf("\n");
		}
		return ;
	}
	for(int i=1;i<=8;i++)
	{
		if(vis1[i]==0&&vis2[x+i]==0&&vis3[x-i+10]==0)
		{
			vis1[i]=1;
			vis2[x+i]=1;
			vis3[x-i+10]=1;
			ret[x]=i;
			dfs(x+1);
			vis1[i]=0;
			vis2[x+i]=0;
			vis3[x-i+10]=0;
			ret[x]=0;
		}
	}
}
int main()
{
	dfs(1);
	return 0;
}

Details

Failed to show details