hdu2553
2016-01-15 00:00
302 查看
http://acm.hdu.edu.cn/showproblem.php?pid=2553
![](http://static.oschina.net/uploads/img/201601/15103725_N5Tf.gif)
![](http://static.oschina.net/uploads/img/201601/15103726_A0WJ.gif)
Nqueen问题
![](http://static.oschina.net/uploads/img/201601/15103725_N5Tf.gif)
![](http://static.oschina.net/uploads/img/201601/15103726_A0WJ.gif)
Nqueen问题
#include " iostream " using namespace std; int n; int a[ 20 ]; int b[ 20 ]; int c; bool Panduan( int x) { for ( int i = 0 ; i < x; i ++ ) { if ( (a[x] - a[i]) == 0 || (abs(a[x] - a[i]) - abs(x - i)) == 0 ) return false ; //关键点 } return true ; } void dfs( int y , int z) { for ( int p = 0 ; p < z; p ++ ) { a[y] = p; if (Panduan(y)) { if (y == z - 1 ) c ++ ; else dfs(y + 1 ,z); } } } int main() { for ( int q = 1 ;q <= 10 ;q ++ ) { c = 0 ; dfs( 0 , q); b[q] = c; } while (cin >> n,n) { cout << b << endl; } return 0 ; }