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
     


    }
  • 相关阅读:
    钉钉outgoing机器人小项目开发
    js根据cookie判断,一天之内只弹出一次弹窗
    js倒计时功能
    jquery的$().each,$.each的区别
    VS代码提示自动高亮
    winform当前屏幕大小
    动态增删改控件
    datagridveiw样式
    sql 语句 提取中文的首字母
    按键监听及重写
  • 原文地址:https://www.cnblogs.com/solo/p/1062858.html
Copyright © 2011-2022 走看看