zoukankan      html  css  js  c++  java
  • 递归八皇后/N皇后问题

    八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。

    using System;
    using System.Collections.Generic;
    using   System.Diagnostics;   


    public class MyClass
    {
        
    static int[] site=new  int[8];  
        
    static    int queenNum=8;
        
    static    int count=0;        //解法数
        public static void Main()
        
    {
            
    //WL();
            Queen(0);
            RL();
        }

        
    public static void Queen(int n)
        
    {
            
    if(queenNum==n)
            
    {
                WL(
    "第{0}种解法",++count);
                
                
    for(int i=0;i<queenNum;i++)
                
    {
                    WL(
    "{0},",site[i]);
                }

                WL(
    "------------------------------------");
                
    return;
            }

            
    else
            
    {
                
    for(int i=0;i<queenNum;i++)
                
    {
                    site[n]
    =i;
                    
    if(IsOk(n))
                        Queen(n
    +1);
                }

            }

        }

        
    public static bool IsOk(int n)
        
    {
            
    for(int i=0;i<n;i++)
            
    {
                
    if(site[i]==site[n])
                    
    return false;
                
    if(Math.Abs(site[i]-site[n])==n-i)
                    
    return false;
            }

            
    return true;
        }

        
    Helper methods
     


    }
  • 相关阅读:
    滚动新闻的实现
    使用DLC(Dynamic Loader Compatibility)函数提取iPhone当前运营商信号的强度
    iOS设备中WiFi、蓝牙和飞行模式的开启与关闭
    如何在Typora中使用流程图
    连接池的使用场景
    Mybatisplus入门教程(一)
    mybatis第一篇
    Mybatis需要注意的细节
    测试代码着色插件
    (转)企业Elearning的产业链与业务模式
  • 原文地址:https://www.cnblogs.com/solo/p/1062858.html
Copyright © 2011-2022 走看看