zoukankan      html  css  js  c++  java
  • 求解N皇后问题

    递归

     1 //求解N皇后问题
     2 //递归法
     3 #include<stdio.h>
     4 #include<stdlib.h>
     5 const int N = 20;
     6 int q[N];
     7 void disp(int n){
     8     static int count = 0;
     9     int i;
    10     printf("第%d个解:",++count);
    11     for(i=1;i<=n;i++)
    12         printf("(%d %d)",i,q[i]);
    13     printf("
    ");
    14 }
    15 int place(int k,int j){        //测试(k,j)位置能否放置皇后 
    16     int i = 1;
    17     while(i<k){
    18         if((q[i] == j) || (abs(q[i] - j) == abs(k-i)))    //同列或同对角线 
    19             return 0;
    20         i++; 
    21     }
    22     return 1;
    23 }
    24 void queen(int k,int n){    //放置1~k的皇后  递归实现 
    25     int j;
    26     if(k>n)
    27         disp(n);
    28     else{
    29         for(j=1;j<=n;j++){
    30             if(place(k,j)){        //在第k行找到一个合适位置(k,j) 
    31                 q[k] = j;
    32                 queen(k+1,n);
    33             }
    34         }
    35     }
    36 }
    37 int main(){
    38     int n;
    39     printf("请输入n的值
     n = ");
    40     scanf("%d",&n);
    41     queen(1,n);
    42     return 0;
    43 } 
    44  
    View Code
  • 相关阅读:
    Linux内存管理和应用
    Linux之IRQ domain
    Sass的的使用三
    Sass的的使用二
    Sass的的使用一
    sass的使用
    jQuery核心语法
    jQuery动画处理
    jQuery事件总结
    jQuery 的DOM操作
  • 原文地址:https://www.cnblogs.com/Hqx-curiosity/p/12150585.html
Copyright © 2011-2022 走看看