zoukankan      html  css  js  c++  java
  • (洛谷)P1019 单词接龙

    题目描述
    单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beastbeast 和 astonishastonish ,如果接成一条龙则变为 beastonishbeastonish ,另外相邻的两部分不能存在包含关系,例如 atat 和 atideatide 间不能相连。

    输入输出格式
    输入格式:
    输入的第一行为一个单独的整数 nn ( n le 20n≤20 )表示单词数,以下 nn 行每行有一个单词,输入的最后一行为一个单个字符,表示“龙”开头的字母。你可以假定以此字母开头的“龙”一定存在.

    输出格式:
    只需输出以此字母开头的最长的“龙”的长度

    输入输出样例
    输入样例#1:
    5
    at
    touch
    cheat
    choose
    tact
    a
    输出样例#1:
    23
    说明
    (连成的“龙”为atoucheatactactouchoose)

    NOIp2000提高组第三题

    DFS
    注意细节,这个代码自己仍需深思。

    #include<bits/stdc++.h>
    using namespace std;
    const int MAXN=50;
    string str[MAXN];
    int n,used[MAXN];
    int ans=0;
    int check(string a,string b)//查找想同的部分长度
    {
        int la=a.size(),lb=b.size();
        int l=min(la,lb);
        for(int i=1;i<l;i++) {
            int flag = 1;
            for (int j = 0; j < i; j++){
                if(a[la-i+j]!=b[j])
                    flag=0;
            }
            if(flag) return i;
        }
        return 0;
    }
    void dfs(string s,int len)
    {
        ans=max(ans,len);
        for(int i=0;i<n;i++){
            if(used[i]>=2) continue;
            int c=check(s,str[i]);
            if(c>0) {
                used[i]++;
                dfs(str[i],len+str[i].size()-c);
                used[i]--;
            }
        }
    
    }
    int main()
    {
        cin>>n;
        getchar();
        for(int i=0;i<n;i++) {
            cin>>str[i];
            getchar();
            used[i]=0;
        }
        string s;
        cin>>s;
        dfs(' '+s,1);
        cout<<ans<<endl;
        return 0;
    }
  • 相关阅读:
    git的优秀教程
    线性表的顺序存储结构和链式存储结构的比较
    python3基础知识学习记录
    thinkPHP为什么设置一个单入口文件?
    2017年读过的专业书
    DFS(深度优先搜索)模板
    HDOJ2553-N皇后问题(DFS)
    POJ(2784)Buy or Build
    并查集 分类: 并查集 2015-07-09 16:32 0人阅读 评论(0) 收藏
    Number of Containers(数学) 分类: 数学 2015-07-07 23:42 1人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/-xiangyang/p/9220236.html
Copyright © 2011-2022 走看看