各种DFS

  • DFS邻接矩阵遍历图
void DFS(int i)
{
    vest[i]=true;
    for(int j=0; j<N; j++)
    {
        if(vest[j]==false&&G[i][j]!=INF)
            DFS(j);
    }
}
  • DFS邻接表遍历图
void DFS(int i)
{
    vest[i]=true;
    for(int j=0; j<Adj[i].size(); i++)
    {
        if(vest[Adj[i][j]]==false)
            DFS(Adj[i][j]);
    }
}
  • DFS回溯(不走重复路径)
void DFS(int x)
{
    if(x==5)
    {
        int sum=a[0]-a[1]*a[1]+a[2]*a[2]*a[2]-a[3]*a[3]*a[3]*a[3]+a[4]*a[4]*a[4]*a[4]*a[4];
        if(sum==n)
            cnt++;
        return;
    }
    for(int i=0;i<len;i++)
    {
        if(vest[i]==false)
        {
            a[x]=s[i]-'A'+1;
            vest[i]=true;
            dfs(x+1);
            vest[i]=false;
        }
    }
    return;
}
  • DFS背包(可重复选)
void DFS(int index,int use,int sum,int x)
{
    if(index==26)
    {
        if(sum<=50&&sum>0)
             cnt++;
        return;
    }
    if(use<num[index]&&sum+index+1<=50)
    {
        temp[x]=index+1;
        DFS(index,use+1,sum+index+1,x+1);
    }
    DFS(index+1,0,sum,x);
}
  • DFS背包(不可重复选)
void DFS(int index,int x,int sum)
{
    if(index==pNum)
        return;
    if(x==2)
    {
        if(sum==N)
            cnt++;
        return;
    }
    if(sum+prime[index]<=N)
        DFS(index+1,x+1,sum+prime[index]);
    DFS(index+1,x,sum);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1)这本书为什么值得看: Python语言描述,如果学的Python用这本书学数据结构更合适 2016年出版,内容...
    孙怀阔阅读 12,654评论 0 15
  • 一、动态规划 找到两点间的最短路径,找最匹配一组点的线,等等,都可能会用动态规划来解决。 参考如何理解动态规划中,...
    小碧小琳阅读 25,254评论 2 20
  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 6,067评论 0 13
  • 9月18日,这个中国人不会忘记的日子,付庄乡中心学校在早上升国旗的时间,由九年级历史老师李文高老师作了勿忘国耻,振...
    张超_c79b阅读 391评论 0 0
  • 下午从家拿了罐酸奶, 拦了辆车去看《西游2》。 来去一人的我成功引起了广大三两成队观众的注意, 面对某凡尴尬的演技...
    _mystery阅读 170评论 0 1