SDAU课程练习2 1019

来源:互联网 发布:部落战争mac电脑版 编辑:程序博客网 时间:2024/06/07 05:22

N皇后问题

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 4   Accepted Submission(s) : 4
Problem Description
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。<br>你的任务是,对于给定的N,求出有多少种合法的放置方法。<br><br>
 

Input
共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
 

Output
共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
 

Sample Input
1<br>8<br>5<br>0<br><br>
 

Sample Output
1<br>92<br>10<br><br>
 

Author
cgf
 

Source
2008 HZNU Programming Contest
 题目大意:

这么经典的问题我就不多说什么了。

思路:

不好意思多说。看我是怎么水过去的吧。
其实最难的就是判断是否满足条件这里。那个表如何打出来的?
大白上面有说。大家可以去呀看一下。


感想;

一闪一闪亮晶晶。

AC代码:


#include<iostream>#include<string.h>#include<set>#include<stdio.h>#include<vector>#include<algorithm>#include<numeric>#include<math.h>#include<string.h>#include<sstream>#include<stdio.h>#include<string>#include<cstdlib>#include<algorithm>#include<iostream>#include<map>#include<queue>#include<iomanip>#include<cstdio>using namespace std;int main(){    //freopen("r.txt","r",stdin);    int ww[25];    ww[1]=1;    ww[2]=0;    ww[3]=0;    ww[4]=2;    ww[5]=10;    ww[6]=4;    ww[7]=40;    ww[8]=92;    ww[9]=352;    ww[10]=724;    int n,a,i;    while(cin>>n&&n!=0)    {        cout<<ww[n]<<endl;    }    return 0;}


0 0
原创粉丝点击