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; 

         

  • 相关阅读:
    做一名让开发佩服的测试(浅析)
    软件测试行业—职业发展之路(浅谈)
    移动端APP测试总结
    Http协议!(转)
    移动App书写Test Case时需要考虑的检查点
    黑盒测试方法——边界值分析(转)
    黑盒测试方法——等价类划分(转)
    在线网络实用工具
    Android Monkey压力测试(转)
    软件工程(浅谈)
  • 原文地址:https://www.cnblogs.com/hxy8888/p/6090945.html
Copyright © 2011-2022 走看看