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

    在8×8的棋盘上,放置8个皇后(棋子),使两两之 间互不攻击。所谓互不攻击是说任何两个皇后都要 满足:
    (1)不在棋盘的同一行;

    (2)不在棋盘的同一列;

    (3)不在棋盘的同一对角线上。
    因此可以推论出,棋盘共有8行,故至多有8个皇后, 即每一行有且仅有一个皇后。这8个皇后中的每一个 应该摆放在哪一列上是解该题的任务。

     1 import java.math.BigInteger;
     2 import java.util.Arrays;
     3 import java.util.Scanner;
     4 
     5 
     6 public class Main {
     7     public static int[] lie  = new int[9];
     8     public static int[] leftup = new int[16];
     9     public static int[] leftdown = new int[16];
    10     public static int sum;
    11     public static void main(String[] args) {
    12         f(1);
    13         System.out.println(sum);
    14     }
    15     public static void f(int i){
    16         if(i>8){
    17             sum++;
    18         }else{
    19             for(int j=1;j<=8;j++){
    20                 if(lie[j]==0&&leftup[i+j-1]==0&&leftdown[i-j+8]==0){
    21                     lie[j] = 1;
    22                     leftup[i+j-1] = 1;
    23                     leftdown[i-j+8] = 1;
    24                     f(i+1);
    25                     lie[j] = 0;
    26                     leftup[i+j-1] = 0;
    27                     leftdown[i-j+8] = 0;
    28                 }
    29             }
    30         }
    31     }
    32 }
  • 相关阅读:
    java后端
    2017-12-11
    二叉树与分治法整理
    javaweb
    安装docker
    爬虫
    lintcode
    DEEPlearning
    剑指offer_by牛客网
    DFS
  • 原文地址:https://www.cnblogs.com/lolybj/p/6600470.html
Copyright © 2011-2022 走看看