View Code
#include<stdio.h>
#include<stdlib.h>
const int N=20;
int q[N];
int cont=0;
void print(int n)
{
    cont++;
    int i;
    printf("NO.%d:",cont);
    for(i=1;i<=n;i++)
        printf("%d",q[i]);
    printf("\n");
}
int find(int i,int k)
{
    int j;
    j=1;
    while(j<k)
    {
        if((q[j]==i)||(abs(q[j]-i)==abs(j-k)))
            return 0;
        j++;
    }
    return 1;
}
void place(int k,int n)
{
    if(k>n)
        print(n);
    else
        for(int i=1;i<=n;i++)
            if(find(i,k))
            {
                q[k]=i;
                place(k+1,n);
            }
}
void disp(int zz,int n)
{
    int i,j,q=0,k[N];
    for(j=0;j<n;j++)
        for(i=0;i<n;i++)
            if(zz[i][j])
                k[q]=zz[i][j];
            printf("zzhou:%s",k);
}
void zb(int a[],int n)
{
    int i=0,j=0,zz[N][N],s=0;
    for(;s<n;s++)
        for(;i<n;i++)
            for(;j<n;j++)
                if(i==s||j==a[s])
                    zz[i][j]=1;
                else
                    zz[i][j]=0;
                disp(zz,n);
}
void main()
{
    int n;
    printf("huanghouwenti(n<20)n=");
        scanf("%d",&n);
    if(n>20)
        printf("n is too big to do!\n");
    else
    {
        printf("%d  quuen matter's jieguo:\n",n);
        place(1,n);
        printf("\n");
    }
    zb(q[],n);
}

 

posted on 2012-04-27 11:21  C's  阅读(244)  评论(0编辑  收藏  举报