#include <iostream>
using namespace std ;
int a [100], b[100], c[100], d[100] ;
int total ;
int n ;
int print()
{
if ( total <= 2 )
{
for ( int i = 1 ; i <= n ; i++ )
cout << a[i] << " " ;
cout << endl ;
}
total++ ;
}
void queen( int i )
{
if ( i > n )
{
print();
return ;
}
else
{
for( int j = 1 ; j <= n ; j++ )
{
if ( (!b[j]) && ( !c[i+j]) && (!d[i-j+n]) )
{
a[i] = j ;
b[j] = 1 ;
c[i+j] = 1;
d[i-j+n] = 1;
queen(i+1);
b[j] = 0 ;
c[i+j] = 0 ;
d[i-j+n] = 0 ;
}
}
}
}
int main()
{
cin >> n ;
queen(1);
cout << total << endl ;
return 0 ;
}
P1219 [USACO1.5]八皇后 Checker Challenge
最新推荐文章于 2024-10-09 09:53:23 发布
这段代码实现了经典的八皇后问题,通过递归的方式找出所有可能的解决方案。它使用了二维数组a来存放皇后的位置,辅助数组b, c, d避免皇后间的冲突。程序首先读取n值,然后调用queen函数进行皇后放置,最后输出解决方案总数。
摘要由CSDN通过智能技术生成