zoukankan      html  css  js  c++  java
  • 八皇后问题

     1 /*N皇后问题*/
     2 #include<stdio.h>
     3 #include<string.h>
     4 int a[20][20];//N皇后矩阵
     5 int v[3][20];//v[0][i]表示列是否冲突;v[1][i]表示副对角线是否冲突; v[2][i]表示正对角线是否冲突
     6 int n;//N皇后
     7 int c[1000][20];//存放条件成立的结果
     8 int num;
     9 
    10 
    11 void fun(int cur)
    12 {
    13     int i;
    14     if(cur==n)
    15     {
    16         num++;
    17         return ;
    18     }
    19 
    20     for(i=0;i<n;i++)
    21     {
    22         if(!v[0][i] &&!v[1][i+cur]&&!v[2][cur-i+n])
    23         {
    24             c[num][cur]=i;//c[num][cur]存放的是num个结果中的 第cur行第i列是皇后
    25             v[0][i] =v[1][i+cur]=v[2][cur-i+n]=1;
    26             fun(cur+1);
    27             v[0][i] =v[1][i+cur]=v[2][cur-i+n]=0;
    28         }
    29     }
    30 }
    31 
    32 void pint()
    33 {
    34     int i,a,b;
    35     FILE *p;
    36     p=fopen("八皇后.txt","w");
    37     for(i=0;i<num;i++)
    38     {
    39         fprintf(p,"%d\n",i+1);
    40         for(a=0;a<n;a++)
    41         {
    42             for(b=0;b<n;b++)
    43                 if(c[i][a]==b)//c[num][cur]存放的是num个结果中的 第cur行第i列是皇后
    44                     //printf("1 ");
    45                     fprintf(p,"1 ");
    46                 else
    47                 //    printf("0 ");
    48                     fprintf(p,"0 ");
    49                 fprintf(p,"\n");
    50         }
    51         fprintf(p,"\n");
    52     }
    53     fclose(p);
    54 }
    55 
    56 int main()
    57 {
    58    while(scanf("%d",&n))
    59    {
    60        memset(a,0,sizeof(a));
    61        memset(v,0,sizeof(v));
    62        memset(c,0,sizeof(c));
    63        num=0;
    64        fun(0);
    65        printf("%d\n",num);
    66        pint();
    67    }
    68    return 0;
    69 }
    70 
    71 
    72 
    73         
  • 相关阅读:
    2017.10.12
    2017.10.25
    2017.10.24
    进度条06
    课堂练习(返回一个环状一维整数数组中最大子数组的和)
    团队项目成员和题目
    团队作业--四则运算网页版
    进度条04
    个人作业(最大子数组)
    进度条03
  • 原文地址:https://www.cnblogs.com/xiaofanke/p/2817011.html
Copyright © 2011-2022 走看看