首页 > 其他分享 >搜索与图论(1)

搜索与图论(1)

时间:2023-05-07 15:57:54浏览次数:26  
标签:图论 const int namespace dfs 搜索 bool include

DFS深度优先遍历

回溯、剪枝、对应一条搜索树

 全排列问题

#include <iostream>
#include <algorithm>
using namespace std ;

const int N = 10 ; 

int n; 
int path[N] ; // 存方案的
bool st[N] ; //true表示当前数组已被用过

void dfs(int u)
{
    if( u==n )
    {
        for(int i = 0; i<n ; i++) cout<<path[i]<<' ' ; 
        cout<<endl ; 
        return ;
    }
    
    for(int i=1; i<=n; i++)
        if( !st[i] ) // 没用过
        {
            path[u] = i ; 
            st[i] = true ; 
            dfs(u+1) ; 
            st[i] = false ; //恢复现场
        }
}

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

n-皇后问题

#include <iostream>
#include <algorithm>
using namespace std ;
const int N = 20 ; 
int n; 
char g[N][N] ; // 存方案的
bool l[N], zx[N], fx[N] ; //列 正对角线(左上到右下) 反对角线

void dfs(int u)
{
    if( u==n ) { // 摆了n个皇后,满足题意
        for(int i=0; i<n ; i++) puts(g[i]); 
        cout<<endl; 
        return ; 
    }
    
    for(int i=0; i<n; i++) // 枚举第u行 皇后放在哪一列
        if( !l[i] && !zx[u+i] && !fx[n-u+i] ) // 没用过 坐标转化参考 y=x+b 则 b=y-x,不能是负数 改成 b=y-x+n 
        {
            g[u][i] = 'Q' ; 
            l[i] = zx[u+i] = fx[n-u+i] = true ; // 都标为用过了  y=-x+b 则 b = x+y 
            dfs(u+1) ; 
            l[i] = zx[u+i] = fx[n-u+i] = false ; //恢复现场
            g[u][i] = '.'  ;
        }
}

int main(){
    
    cin>>n;  
    for(int i=0; i<n; i++)
        for(int j=0; j<n; j++)
            g[i][j] = '.' ; 
 
    dfs(0) ; 
    return 0 ;
}

 

BFS广度优先遍历

 

标签:图论,const,int,namespace,dfs,搜索,bool,include
From: https://www.cnblogs.com/zundicai/p/17379380.html

相关文章

  • 拼接最大数(栈、贪心)、发奖金问题、二叉搜索树迭代器(栈、树)
    拼接最大数(栈、贪心)给定长度分别为m和n的两个数组,其元素由0-9构成,表示两个自然数各位上的数字。现在从这两个数组中选出k(k<=m+n)个数字拼接成一个新的数,要求从同一个数组中取出的数字保持其在原数组中的相对顺序。求满足该条件的最大数。结果返回一个表示该最大......
  • 【二分查找】LeetCode 33. 搜索旋转排序数组思路
    题目链接33.搜索旋转排序数组思路思路都在注释里代码classSolution{publicintsearch(int[]nums,inttarget){intlen=nums.length;if(len==0){return-1;}intleft=0,right=len-1;//1.......
  • Android开发中的一个小功能 清空搜索框的文字
    需求:项目中的有关搜索的地方,加上清空文字的功能,目的是为了增加用户体验,使用户删除文本更加快捷解决过程:开始的时候感觉这个东西不太好实现,主要就是布局的问题,可能是开始顾虑的太多了,再加上当时产品催的不太紧,而且这个功能也不是必须实现的。但是今天不一样了,这个是老大让加上的,说别......
  • app列表页(无筛选 无搜索)
    <template><divclass="whmainbxs"><divclass="headerbxsw"><van-row><van-col@click="backFn"span="8"class="f18cormpl10"><van-iconn......
  • app列表页(无筛选 有搜索)
    <template><divclass="whmainbxs"><divclass="headerbxsw"><van-row><van-col@click="backFn"span="8"class="f18cormpl10"><van-iconn......
  • 解密Elasticsearch:深入探究这款搜索和分析引擎
    作者:京东保险 管顺利开篇最近使用Elasticsearch实现画像系统,实现的dmp的数据中台能力。同时调研了竞品的架构选型。以及重温了redis原理等。特此做一次es的总结和回顾。网上没看到有人用Elasticsearch来完成画像的。我来做第一次尝试。背景说完,我们先思考一件事,使用内存系统做......
  • 电子邮件系统 2----JavaMail 搜索指定邮件示例
    1./**2.*CrazyItTest3.*使用JavaMail搜索并删除指定邮件示例4.*/5.package6.import7.import8.import9.import10.import11.import12.import13.import14.import15.import16.import17.import18.import19.import20./**21.*@authorBi......
  • 掌握这些GitHub搜索技巧,你的开发效率将翻倍!
    作为开发it行业一员,学习借鉴他人项目是很有必要的,所以我们一般都会从github或者Gitee上面去参考借鉴他人的项目来学习增加自己的项目经验但是github你真的用对了嘛,他的功能其实很强大!!!githu项目搜索关键字搜索在Github搜索栏中输入与您感兴趣的技术相关的关键词,例如“machine......
  • Google谷歌语法 - 让搜索事半功倍
    高效率的搜索方法-谷歌语法适用于多种搜索引擎,原主要对象为Google搜索引擎,其他搜索引擎也适用,如必应bing,百度,搜狗等语法类搜索方法site语法site意思为站点,该语法是限制搜索的目标为域名,然后搜索子域名。比如我们搜索“site:edu.cn”,这样搜出来的内容都是有关于学校的内容,而......
  • djangoadmin后台搜索结果筛选自定义模版
    django-admin对搜索结果进行自定义统计,可参考代码如下:defchangelist_view(self,request,extra_context=None):#cur1_time=datetime.now()data_dict={}value=request.GET.get('q',"")bill_cycle=request.GET.get('bi......