• HDU


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2553


    #include <iostream>
    using namespace std;
    /****************************************************************************************************************
                题意:在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击
                     (即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
                      你的任务是,对于给定的N,求出有多少种合法的放置方法。
                思路:
                1,经典老题了,dfs,剪枝是关键!!!
                2,23333,我明显没有剪枝,直接打表,因为题目数据最大就是 10,(根本就不是N皇后)
                3,难点在于 : 不允许处在与棋盘边框成45角的斜线上,这个怎么描述。
                   后来看网上这么写 : i-id == ID[j]-j || i+id == ID[j]+j
                   即到对角线距离不想等。想的太简洁了。
                4,网上还有一种位运算的解法,不用打表,相当省时间。
                    
                    不会位运算,以后再看吧!碰到好几次了,好有用的样子!!!
    ****************************************************************************************************************/
    int n,num;
    int ID[11];
    void dfs(int id)
    {
        int flag;
        if(id==n+1){
            num++;
            return;
        }
        else{
            for(int i = 1;i <= n;i ++){
                ID[id]=i;       //尝试所有位置
                flag=1;
                for(int j = 1;j < id;j ++){
                    if(ID[j] == i || i-id == ID[j]-j || i+id == ID[j]+j){  //不在同一行,不在对角线
                                                                         //即到对角线距离不想等
                        flag=0;
                        break;
                    }
                }
                if(flag)
                    dfs(id+1);
            }
        }
    }
    int main()
    {
        int m;
        int ans[11];
        for(n = 1;n <= 10;n ++){
            num=0;
            dfs(1);
            ans[n]=num;
        }
        while(cin>>m){
            if(m == 0 || m > 10)  break;
            cout<<ans[m]<<endl;
        }
        return 0;
    }
    


  • 相关阅读:
    Discuz热搜在哪里设置?
    Discuz如何设置帖子隐藏回复可见或部分可见方法
    新版Discuz!应用中心接入教程(转)
    Diszuz管理面版被锁怎么办?
    vs 2019 调试无法查看变量
    Google Docs 的格式刷快捷键
    chrome 的常用快捷键
    Activiti 数据库表结构
    activiti 报 next dbid
    尚硅谷Java基础_Day2
  • 原文地址:https://www.cnblogs.com/Jstyle-continue/p/6352018.html
Copyright © 2020-2023  润新知