计蒜客深搜—八皇后问题

1001-高同学

发表文章数:265

首页 » LeetCode » 正文

计蒜客深搜---八皇后问题

该题是求一个数(n)全排列的一个变形题,在搞懂这道题之前我们要搞懂全排列的dfs写法。在此基础上进行更改。

如果对全排列的dfs写法不是很熟练,我们先解决这个问题。

全排列可以看成分别从1到n开头,组成的不重复的数列问题。那么递归死胡同就是该数列的长度等于n,岔路口就是当前这个数该不该选。

#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
const long long maxn = 35;
int p[10];
int vis[10];
bool flag = false;
int maxLen=0,sum=0;
int mp[8][8];
void dfs(int index)
{
    if(index == 4)
    {
         for(int i=0; i<4; i++)
         {
             cout<<p[i]+1<<" ";
         }
            cout<<endl;
    }
    for(int i=0; i<4; i++)
    {
        if(vis[i] == 0)
        {
            p[index] = i;
            vis[i] = 1;
            dfs(index+1);
            vis[i] = 0;
        }
    }
}
int main()
{
    for(int i=0; i<10; i++)
        vis[i] = 0;
    dfs(0);
    cout<<maxLen<<endl;
    return 0;
}

代码如下;

#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
const long long maxn = 35;
int p[10];
int vis[10];
bool flag = false;
int maxLen=0,sum=0;
int mp[8][8];
void dfs(int index)
{
    if(index == 8)
    {
        bool flag = true;
        for(int i=0; i<8; i++)
        {
            for(int j=i+1; j<8; j++)
            {
                if(abs(i-j)==abs(p[i]-p[j]))
                {
                    flag = false;
                }
            }
        }
        if(flag)
        {
            for(int i=0; i<8; i++)
            {
                sum+=mp[p[i]][i];
            }
            if(sum > maxLen)
                maxLen = sum;
            sum = 0;
        }
    }
    for(int i=0; i<8; i++)
    {
        if(vis[i] == 0)
        {
            p[index] = i;
            vis[i] = 1;
            dfs(index+1);
            vis[i] = 0;
        }
    }
}
int main()
{
    for(int i=0; i<10; i++)
        vis[i] = 0;
    for(int i=0; i<8; i++)
    {
        for(int j=0; j<8; j++)
        {
            cin>>mp[i][j];
        }
    }
    dfs(0);
    cout<<maxLen<<endl;
    return 0;
}

 

拜师教育学员文章:作者:1001-高同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《计蒜客深搜—八皇后问题》 发布于2018-08-12

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录