• 变形课 HDU1181


    简单DFS 数据很水

    我处理不好 dfs函数里面的return  干脆弄一个全局变量flag  不清楚不断dfs的话到底算哪个return?

    #include<bits/stdc++.h>
    using namespace std;
    
    int  m1[1000][1000];
    int flag=0;
    
    
    void dfs(int K)
    {
       int f=0;
        for(int i=97;i<=97+26;i++)
        {
            if(m1[K]['m']==1){flag=1;return ;}
    
            if(m1[K][i]==1){f=1;m1[K][i]=0;dfs(i);}
    
        }
       if(!f) {return;}
    
    
    }
    
    
    int main()
    {
           string t;
        while(getline(cin,t),t[0]!=0)
        {   flag=0;
            memset(m1,0,sizeof(m1));
            string s;
            m1[t[0]][t[t.size()-1]]=1;
            for(;;)
            {
                getline(cin,s);
                if(s[0]=='0')break;
    
                m1[s[0]][s[s.size()-1]]=1;
    
            }
    
          dfs(98);
    
          if(flag)printf("Yes.
    ");
          else printf("No.
    ");
    
        }
    
    
    
    
    
    
    
        return 0;
    }
    View Code

    改成

      if(m1[K][i]==1){m1[K][i]=0;if(dfs(i))return true;}
    

      其中的

    if(dfs(i))return true;是关键
    如果没有这条 当前的dfs就会延续到末尾的false!!!!
    一环接一环
  • 相关阅读:
    【C++】基础及引用
    gradle打包分编译环境
    gradle
    MediaPlayer滑动不准的问题
    python初步入门
    音频播放服务
    《深入理解Android2》读书笔记(二)
    缓存(LruCache)机制
    handler机制
    监听网络状态
  • 原文地址:https://www.cnblogs.com/bxd123/p/10309182.html
Copyright © 2020-2023  润新知