zoukankan      html  css  js  c++  java
  • hdu1181 dfs搜索之变形课

    原题地址

    这道题数据据说比較水,除了第一组数据是Yes以外。其余都是No。非常多人抓住这点就水过了。当然了,我认为那样过了也没什么意思。刷oj刷的是质量不是数量。

    这道题从题目上来看是个不错的 搜索题,解法多种多样,有 dfs。bfs,并查集,dijkstra算法都能解决。

    题目分析:

    题目中给了非常多字符串。可是关心的仅仅是字符串的第一个和最后一个字符。咋看起来。貌似是要建立一个个字符间的“映射”,事实上不然,这事实上能够转化为一张26*26的有向图。

    有最多26个结点,原先的字符间映射关系就转化为结点之间有路径。问题就变成了能否找一条路径从结点b到结点m。

    我用的dfs解的。

    #include<iostream>
    #include<cstring>
    using namespace std;
    bool g[26][26];//全局变量声明时会被初始化为0(false)
    bool used[26];//全局变量声明时会被初始化为0(false)
    bool dfs(int i)
    {
        used[1]=true;
        for(int j=0;j<26;j++)
        {
            if(i!=j&&!used[j]&&g[i][j])
            {
                if(i!=1)
                    g[1][j]=true;
                used[j]=true;
                dfs(j);
            }
        }
        return g[1][12];//b为1,m为12
    }
    int main()
    {
        char s[100];
        while(cin>>s)
        {
            if(s[0]!='0')
            {
                int len=strlen(s);
                g[s[0]-'a'][s[len-1]-'a']=true;
                continue;
            }
            if(dfs(1))
                cout<<"Yes."<<endl;
            else
                cout<<"No."<<endl;
            memset(g,false,sizeof(g));
            memset(used,false,sizeof(used));
        }
    }
    


  • 相关阅读:
    viewController 不响应横竖屏转换相关消息的问题
    nsset排序
    内存相关
    技巧
    IOSTip
    iphone 资源
    IPhone 开发经验教训总结 仅供参考 (转载)
    WIN7控制面板假死
    Firefox添加web浏览端口:此地址使用了一个通常应该用于其他网页浏览的端口
    【WordPress】WXR version error when import into wordpress
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7191292.html
Copyright © 2011-2022 走看看