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

    思路:回溯法求解。关键在于找出皇后能攻击的格子,竖直方向的好找,斜45方向就需要找下规律。

    列 - 行

    0  1  2  3   4

    -1  0  1  2  3

    -2 -1  0  1  2

    -3 -2 -1  0  1

    -4 -3 -2 -1  0 

    列+行

    0 1 2 3 4

    1 2 3 4 5

    2 3 4 5 6

    3 4 5 6 7

    4 5 6 7 8

    AC代码:

     1 #include<iostream>
     2 #include<string.h>
     3 using namespace std;
     4 int flag[15];
     5 int vis[2][30];
     6 int ans[15];
     7 int dfs(int num,int n){
     8     int cnt=0;
     9     if(num==0){
    10         return 1;
    11     }
    12     for(int i=1;i<=n;i++){
    13         if(flag[i]||vis[0][i-num+n]||vis[1][i+num]){
    14             continue;
    15         }
    16         flag[i]=vis[0][i-num+n]=vis[1][i+num]=1;
    17         cnt+=dfs(num-1,n);
    18         flag[i]=vis[0][i-num+n]=vis[1][i+num]=0;
    19     }
    20     return cnt;
    21 }
    22 int main(){
    23     for(int i=1;i<=10;i++){   //因为不知道询问多少次,所以先打表
    24         memset(vis,0,sizeof(vis));
    25         memset(flag,0,sizeof(flag));
    26         ans[i]=dfs(i,i);
    27     }
    28     int n;
    29     while(cin>>n){
    30         memset(flag,0,sizeof(flag));
    31         memset(vis,0,sizeof(vis));
    32         if(n==0){
    33             break;
    34         }
    35         cout<<ans[n]<<endl;
    36     }
    37     return 0;
    38 }
  • 相关阅读:
    CSS基础——基本单位
    CSS基础——表格
    CSS基础——列表
    Single-Source Shortest Paths
    Maximum Flow
    Breadth-First Search
    Depth-First Search (III)
    Depth-First Search (II)
    Depth-First Search (I)
    Simple Complete Search
  • 原文地址:https://www.cnblogs.com/ISGuXing/p/8889368.html
Copyright © 2011-2022 走看看