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

    原创


    八皇后问题是动态规划类算法的经典问题之一,写此博客旨在学习DP,巩固知识,有错误的地方,非常欢迎大家指出。

    问题描述:在一个8行8列的宫格中摆放8个皇后,要求每个皇后所在行、所在列、所在45°方向(左上方、左下方、右上方、右下方)不能有其他皇后;

    要求算出一共有多少种摆法。

    解决方法很简单,在宫格中,每一行每一列只能放置一个皇后,这里我以列为单位进行放置皇后(也可以以行为单位放置),在第J列中,从上都下遍历此列的所有宫格,

    判断此宫格是否满足条件(行、列、斜方无其他皇后),满足条件放置皇后搜索下一列,不满足条件搜索此列的下一个宫格,如果此列的所有宫格都不满足条件,回到上一列改变

    上一列宫格的位置(回溯)重新进入此列搜索;当放置完8个皇后以后计算器+1,回溯,搜索其他位置。

    答案:92

     1 #include<stdio.h>
     2 
     3 int eight[8][8];
     4 
     5 int count;
     6 
     7 int Judge(int row,int rank)    //判断
     8 {
     9     int i,j;
    10     for(j=0;j<=7;j++)    //
    11         if( eight[row][j]==1 )
    12             return 1;
    13     
    14     for(i=0;i<=7;i++)    //
    15         if( eight[i][rank]==1 )
    16             return 1;
    17     
    18     for(i=row,j=rank;i>=0 && j>=0;i--,j--)    //左上方 
    19         if( eight[i][j]==1 )
    20             return 1;
    21             
    22     for(i=row,j=rank;i>=0 && j<=7;i--,j++)    //右上方
    23         if( eight[i][j]==1 )
    24             return 1;
    25             
    26     for(i=row,j=rank;i<=7 && j>=0;i++,j--)    //左下方 
    27         if( eight[i][j]==1 )
    28             return 1;
    29             
    30     for(i=row,j=rank;i<=7 && j<=7;i++,j++)    //右下方
    31         if( eight[i][j]==1)
    32             return 1; 
    33         
    34     return 0;    
    35 }
    36 
    37 void eightqueen(int rank)
    38 {
    39     if(rank==8)    //8个皇后放置完毕
    40     {
    41         count++;
    42         return;
    43     } 
    44     
    45     int i;
    46     for(i=0;i<=7;i++)    //i代表行下标 
    47     {
    48         if( Judge(i,rank)==0 )    //满足条件,放置皇后
    49         {
    50             eight[i][rank]=1;
    51             eightqueen(rank+1);
    52             eight[i][rank]=0;    //回溯
    53         } 
    54     }
    55 
    56 }
    57 
    58 int main()
    59 {
    60     eightqueen(0);
    61     printf("%d",count);
    62     return 0;
    63 } 

    2018-04-07

  • 相关阅读:
    如何控制Yahoo! Slurp蜘蛛的抓取频度_国外博客资源站_百度空间
    PHP学习之十:foreach
    asp.net 上传控件
    程序员转型不得不说的事 成为管理者
    博客无法使用外站图片,暂停更新一段时间
    C#控制光驱开关
    通过输入方式在Android上进行微博OAuth登录
    .Net 绑定Dropdownlist的时自定义组合字段后显示
    XNA那些事(四) 3D知识初步
    jQuery实现图片延迟加载
  • 原文地址:https://www.cnblogs.com/chiweiming/p/8733795.html
Copyright © 2011-2022 走看看