N皇后debug
  • 板块学术版
  • 楼主pgm_520
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/6/9 10:47
  • 上次更新2024/6/9 14:10:13
查看原帖
N皇后debug
1243041
pgm_520楼主2024/6/9 10:47

求大佬debug

#include<iostream>
using namespace std; 
int sum=0;
int s[10][10];
void pt()
{
	int i,j,k;
	cout<<endl;
	for(i=1;i<=8;i++)
	{
		for(j=1;j<=8;j++)
		{
			if(s[i][j]==0)
			{
				cout<<". ";
			}
			else
			{
				cout<<"Q ";
			}
		}
		cout<<endl;
	}
	cout<<endl;
	cout<<"---------------";
}
int pd()
{
	int e,i,j,x,y;
	for(j=1;j<=8;j++)
	{
		e=0;
		for(i=1;i<=8;i++)
		{
			e+=s[i][j];
		}
		if(e!=1)
		{
			return 1;
		}
	}
	for(i=8;i>=1;i--)
	{
		e=0;
		x=i;
		y=1;
		while(x<=8)
		{
			e+=s[x++][y++];
		}
		if(e>1)
		{
			return 1;
		}	
	}
	for(j=2;j<=8;j++)
	{
		e=0;
		x=1;
		y=j;
		while(y<=8)
		{
			e+=s[x++][y++];
		}
		if(e>1)
		{
			return 1;
		}	
	}	
	for(j=1;j<=8;j++)
	{
		e=0;
		x=1;
		y=j;
		while(y>=1)
		{
			e+=s[x++][y--];
		}
		if(e>1)
		{
			return 1;
		}	
	}
	for(i=2;i<=8;i++)
	{
		e=0;
		x=i;
		y=8;
		while(x<=8)
		{
			e+=s[x++][y--];
		}
		if(e>1)
		{
			return 1;
		}	
	}
	return 0;
}
void queen(int q,int n)
{
	int j;
	if(q==(n+1))
	{
		if(pd()==0)
		{
			sum++;
		}
		return;
	}
	for(j=1;j<=n;j++)
	{
		s[q][j]=1;
		queen(q+1,n);
		s[q][j]=0;
	}
}
int main()
{
	int n,i,j,k,x,y,z,a,b;
	cin>>n;
	queen(1,n);
	cout<<sum; 
	return 0;
} 
2024/6/9 10:47
加载中...