求大佬帮忙看看问题
查看原帖
求大佬帮忙看看问题
1237887
xxxxyz6667楼主2024/7/10 14:01
#include<bits/stdc++.h>
using namespace std;
//int i=1;
int a[140],f[150][150],n;
void dfs(int i)
{
	if(i==n+1)//?
	{
		for(int k=1;k<=n;k++)
		{
			cout<<a[k]<<" ";
		}
		return ;
	}
	for(int k=1;k<=n;k++)
	{
		if(f[i][k]==1) continue;
		if(f[i-1][k]==1) continue;//下和右不用管,尽情占领 
		//if(f[i+1][j]==1) continue;
		if(f[i][k-1]==1) continue;
		//if(f[i][j+1]==1) continue;
		if(f[i-1][k-1]==1) continue;//左上角 
		if(f[i+1][k-1]==1) continue;//右上角
		f[i][k]=1;//占领这个位置
		a[i]=k;
		//cout<<i<<k;
		//f[i][k]=f[i-1][k]=f[i][k-1]=f[i-1][k-1]=f[i+1][k-1]=1;
		dfs(i+1);
		f[i][k]=f[i-1][k]=f[i][k-1]=f[i-1][k-1]=f[i+1][k-1]=0;//
		a[i]=0;	//害
	 } 
}
int main()
{
	cin>>n;
	//dfs(i);
	//for(int j=1;j<=3;j++)
	//{
		dfs(1);
	//}
}
2024/7/10 14:01
加载中...