hdu 2553 N皇后问题
Posted 邻家那小孩儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 2553 N皇后问题相关的知识,希望对你有一定的参考价值。
Problem Description
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
Input
共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
Output
共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
Sample Input
1
8
5
0
//还是不太理解。。最近情绪起起伏伏,今天中午也想通了,就算有再多不如意,生活还是要继续努力,不要管了,努力,魔方!!ACM!!
#include<stdio.h> #include<string.h> #include <iostream> using namespace std; int n,tmp; int map[11]; void dfs(int k) { int i,j,flag; if(k==n+1) { tmp++; return ; } else { for(i=1;i<=n;i++) { map[k]=i; flag=1; for(j=1;j<k;j++) { if(map[j]==i||i-k==map[j]-j||i+k==map[j]+j) { flag=0; break; } } if(flag) dfs(k+1); } } } int main() { int i,m; int ans[11]; for(n=1;n<=10;n++) { tmp=0; dfs(1); ans[n]=tmp; } while(cin>>m&&m) { cout<<ans[m]<<endl; } return 0; }
以上是关于hdu 2553 N皇后问题的主要内容,如果未能解决你的问题,请参考以下文章