• HDU2553(回溯)


    N皇后问题

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 18732    Accepted Submission(s): 8475


    Problem Description

    在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
    你的任务是,对于给定的N,求出有多少种合法的放置方法。

    Input

    共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
     

    Output

    共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
     

    Sample Input

    1
    8
    5
    0
     

    Sample Output

    1
    92
    10
     
     1 //2016.8.19
     2 #include <iostream>
     3 
     4 using namespace std;
     5 
     6 int line[15], ans[15], n, cnt;
     7 
     8 void dfs(int row)
     9 {
    10     if(row == n)cnt++;
    11     else
    12     {
    13         for(int i = 0; i < n; i++)
    14         {
    15             bool fg = true;
    16             line[row] = i;
    17             for(int j = 0; j < row; j++)
    18             {
    19                 if(line[row]==line[j] || line[row]-line[j]==row-j || line[row]-line[j]==j-row)
    20                 {
    21                     fg = false;
    22                     break;
    23                 }
    24             }
    25             if(fg)dfs(row+1);
    26         }
    27     }
    28 }
    29 
    30 int main()
    31 {
    32     for(n = 1; n <= 10; n++)
    33     {
    34         cnt = 0;
    35         dfs(0);
    36         ans[n] = cnt;
    37     }
    38     while(cin>>n&&n)
    39     {
    40         cout<<ans[n]<<endl;
    41     }
    42 
    43     return 0;
    44 }
  • 相关阅读:
    甲午年总结
    浅谈数字营销
    机器学习笔记
    上海GDG活动有感
    我也谈谈游戏
    CSS3新增属性
    js事件详解
    DOM与BOM相关操作
    JS基础知识
    js数据类型
  • 原文地址:https://www.cnblogs.com/Penn000/p/5819876.html
Copyright © 2020-2023  润新知