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
     


    }
  • 相关阅读:
    存储过程简介
    微信公众号开发之授权获取用户信息
    微信公众号开发之自定义菜单
    微信公众号开发之如何实现消息交互
    VS2012创建ATL工程及使用MFC测试COM组件
    Regsvr32 在64位机器上的用法(转载)
    模块加载失败 请确保该二进制文件在指定的路径中 找不到指定的模块(转载)
    [内核驱动] miniFilter 内核层与应用程序通信
    [内核驱动] VS2012+WDK 8.0 Minifilter实现指定扩展名文件拒绝访问
    InstallShield 2015 生成单个EXE包和 MSI包
  • 原文地址:https://www.cnblogs.com/solo/p/1062858.html
Copyright © 2011-2022 走看看