N皇后问题(HDU 2553)

来源:互联网 发布:中国外汇储备数据 编辑:程序博客网 时间:2024/06/08 12:38

此题链接单击这里

=================

#include <iostream>#include <cstring>#include <cmath>using namespace std;int N,k;int a[12];bool is(int ai,int aj){    int i=1;    while(i<ai)    {        if(a[i]==aj||abs(i-ai)==abs(a[i]-aj))            return false;        i++;    }    return true;}void funt(int ai){    if(ai>N)    {        k++;        return;    }    for(int j=1;j<=N;j++)        if(is(ai,j))    {        a[ai]=j;        funt(ai+1);    }}int main(){    int b[11];    for(int i=1;i<=10;i++)    {        N=i;        k=0;        memset(a,0,sizeof(a));        funt(1);        b[i]=k;    }    int T;    while(cin>>T&&T)    cout<<b[T]<<endl;}

最直接的求法,不过知道1到10皇后的解

#include <iostream>#include <cstring>#include <cmath>using namespace std;int N;int a[11]={0,1,0,0,2,10,4,40,92,352,724};int main(){    int N;    while(cin>>N&&N)        cout<<a[N]<<endl;}

有问题联系企鹅791267032
邮箱地址….wutanrong@Hotmail.com

0 0
原创粉丝点击