首页 > 其他分享 >深度优先搜索dfs解决排列问题

深度优先搜索dfs解决排列问题

时间:2023-01-18 12:55:34浏览次数:39  
标签:10 优先 int res namespace dfs 搜索 include

八皇后问题

#include<iostream>
#include<vector>
#include<math.h>
using namespace std;
int N;
vector<int> res;
void dfs(int n)
{
    if(n==N)//一种情况结束输出结果 
    {
        for(int i=0;i<N;i++)        cout<<res[i];
        cout<<endl;
        return;
    }
    
    for(int i=1;i<=N;i++)
    {
        int k;
        for(k=0;k<n;k++)
        {
            if(res[k]==i||abs(res[k]-i)==abs(n-k))//皇后会相互攻击 
            {
                break;
            }
        }
        
        if(k==n)//位置合理 
        {
            res[n]=i;
            dfs(n+1);//下一个位置 
        }
    }
}
int main()
{
    cin>>N;
    res.resize(N);//初始化 
    dfs(0);
    return 0; 
}

字符全排列问题

#include<iostream>
#include<string.h>
using namespace std;

char n[10],path[10],used[10];
void dfs(int t)
{
    if(t==strlen(n))//一种情况结束输出结果 
    {
        for(int i=0;i<strlen(n);i++)
        {
            cout<<path[i];
        }
        cout<<endl;
        return;
    }    
    
    for(int i=0;i<strlen(n);i++)
    {
        if(!used[i])//没有被用过,排除重复排列 
        {
            path[t]=n[i];
            used[i]=true;
            dfs(t+1);
            used[i]=false;
        }
    }
}

int main()
{
    cin>>n;
    dfs(0); 
}

 

标签:10,优先,int,res,namespace,dfs,搜索,include
From: https://www.cnblogs.com/weinan030416/p/17059576.html

相关文章

  • 阿里云对话 Tapdata:「开发者优先」正在影响商业化软件的开源选择
    在刚刚过去的2022年,Tapdata带着开源项目PDK(PluginDevelopmentKit)及TapdataCommunity和大家见面,兑现了我们对自己以及开发者们的开源承诺,同时与阿里云等生态伙伴联合......
  • Line search and Step length线搜索与步长
    ​​WelcomeToMyBlog​​​在最优化(optimization)问题中,线搜索(linesearch)和置信域(trustregion)方法是寻找局部最小值(localminimum)基本迭代方法(iterativeap......
  • 【DFS】LeetCode 543. 二叉树的直径
    题目链接543.二叉树的直径思路创建全局变量diameter以记录左子树高度加右子树高度,并在DFS过程中维护此变量。代码classSolution{intdiameter;publ......
  • jQuery插件(jQuery-UI(Accordion:手风琴/Autocomplete:自动搜索匹配/Tabs:选项卡))
    视频<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>测试jQuery-UI的基本使用</title><linkrel="stylesheet"href="jquery-ui.css"><......
  • 技术实践|浅谈Elasticsearch跨集群搜索
    前言Elasticsearch(简称ES)是基于Lucene库的分布式架构搜索引擎。它支持水平横向扩展,但是集群节点不能无限增加。因为当集群的meta信息(节点、索引、集群状态)过多时,会使集群更......
  • idea快捷键:全局搜索文件,代码,接口,ctrl+shift+f无效?
    idea快捷键:全局搜索文件,代码,接口平时我们开发的时候,自己写的代码都不一定找得到,那如何根据自己零星的记忆全局查找代码和文件。可以通过下图的方式:就可以输入自己查询的东......
  • HDFS机架感知
    Hadoop版本:2.9.2什么是机架感知通常大型Hadoop集群是以机架的形式来组织的,同一个机架上的不同节点间的网络状况比不同机架之间的更为理想,NameNode设法将数据块副本保存在......
  • HDFS机架感知
    Hadoop版本:2.9.2什么是机架感知通常大型Hadoop集群是以机架的形式来组织的,同一个机架上的不同节点间的网络状况比不同机架之间的更为理想,NameNode设法将数据块副本保存在......
  • 分布式文件系统seaweedfs搭建配置
    官方网站:https://github.com/chrislusf/seaweedfs/wiki/Getting-Startedseaweedfs是一个非常优秀的由golang开发的分布式存储开源项目。它是用来存储文件的系统,并且与......
  • MySQL必知必会第九章-用正则表达式进行搜索
    用正则表达式进行搜索正则表达式介绍正则表达式是用来匹配文本的特殊的串(字符集合)。使用MySQL正则表达式MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定正则......