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

    八皇后问题的实现
      

     #include <stdio.h> 
    #define N 8           // 定义棋盘的格数, 通过改变,也可以是4皇后, 16皇后, 9皇后什么的. 
    int chess[N][N] = {0}; // 棋盘 

    int count = 0; // 有多少种放法 

    int canput(int row, int col) // 确定某一格能不能放 { 
    int i,j; 
    for(i = 0; i < N; i ++) { 
       if(chess[i][col] == 1) //有 同列的    { 
        return 0;    } 
       for(j = 0; j < N; j++)    { 
        if(chess[row][j]==1) //有同行的     { 
         return 0;     } 
        if(((i-row)==(j-col)||(i-row)==(col-j))&&chess[i][j]==1) // 对角线上有的   

      { 
         return 0;  

       }    

     }


    return 1; } 
    void print_chess() // 打印放置的方案 { 
    int i, j; 
    for(i = 0; i < N; i++) 


       for(j = 0; j < N; j++) 

       { 
        printf("%d ", chess[i][j]);  

        } 
        printf(" ");

    printf(" "); } 

    int put(int row)     // 放置棋子, row是从哪一行开始, 通常是0 { 
    int j, s; 
    for(j = 0; j < N; j++) // 此一行的每一个格子都要试试能不能放

     { 
       if(canput(row, j)) // 假如这格能放的话   

       { 
        chess[row][j] = 1; // 放置 
        if(row == N-1) // 已经到了最后一行, 那么肯定成功

       { 
         count = count +1; 
         print_chess(); 
         chess[row][j] = 0; //成功后, 寻找下一种方法    

         continue;  

         }  
        s = put(row+1); // 放置下一行的  

        if(s == 0)    // 假如下一行不能放    

       { 

         chess[row][j] = 0; // 那么这格是放错了的, 清除      

         continue;           // 找本行的下一个方格     

        }     

        else 

        { 
         break;    

         }     

      } 


    if(j==N)    // 如果这一行的每个空格都不能放置 


       return 0; // 那么本行放置失败

     }

     else

     { 

       return 1; // 本行放置成功 

     } 


    int main()


      int s  ;
      s = put(0); // 放置 
      printf("the number of put way is %d ", count); //打印信息 

      return 0; 

         

  • 相关阅读:
    poj2452
    bnuoj16491
    1326: The contest(并查集+分组背包)
    BNUOJ-1065或运算的简单解法
    递推、规律思维题总结
    uva10160(dfs+状态压缩)
    第七章 人工智能,7.1 基于深度强化学习与自适应在线学习的搜索和推荐算法研究(作者:灵培、霹雳、哲予)
    第六章 大数据,6.3 突破传统,4k大屏的沉浸式体验(作者: 彦川、小丛)
    第六章 大数据,6.2 双11背后的大规模数据处理(作者:惠岸 朋春 谦乐)
    第六章 大数据,6.1 双11数据大屏背后的实时计算处理(作者:藏六 黄晓锋 同杰)
  • 原文地址:https://www.cnblogs.com/hxy8888/p/6090945.html
Copyright © 2011-2022 走看看