美文网首页
单词接龙

单词接龙

作者: Sari | 来源:发表于2016-10-07 09:29 被阅读0次

10.06 [codevs] 单词接龙题记

题目:

题目描述 Description

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

输入描述 Input Description

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

输出描述 Output Description

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

样例输入 Sample Input

5
at
touch
cheat
choose
tact
a

样例输出 Sample Output

23

0.简记

算是第一个自己完成的有一点难度的题目qwq,中途犯了很多奇怪且脑残的错误,
原先的习惯一直是把它们记纸上,既然入了贵系坑,习惯也要渐渐改过来嘛qwq。
再加上代码记纸上实在是懒得写,字也不好看。。。

1.错误

0.审题

忘记是求最长串;
忘记了两次的限制;

1.return -1的位置放错

逻辑混乱

2.知识点

dfs
回溯
字符串处理

3.进步

熟练使用注释调试法

4.代码

#include <string>
#include <iostream>
using namespace std;
int used[20];
string word[20];
string beg;
int maxlen=0;
int tlen=1;
int n;

int check(string a,string b)
{
    int len1=a.size(),len2=b.size();
    for (int i=1;i<=len1;i++)
    {
        if (a.substr(len1-i,i)==b.substr(0,i))
        {
            return len2-i;
        }
    }
    return -1;
}
void dfs (string s)
{
    for (int i=0;i<n;i++)
    {
        if (used[i]!=2)
        {
            if (check(s,word[i])>0)
            {
                tlen += check(s, word[i]);
                used[i]++;
                maxlen=max (maxlen,tlen);
                dfs (word[i]);
                used[i]--;
                tlen -= check(s, word[i]);
            }
        }
    }
}
int main() {
    for (int i=0;i<n;i++)
    {
        used[i]=0;
    }
    cin >>n;
    for (int i=0;i<n;i++)
    {
        cin >>word[i];
    }
    cin >>beg;
    dfs (beg);
    cout << maxlen;

    return 0;
}

相关文章

  • LeetCode-127-单词接龙

    LeetCode-127-单词接龙 127. 单词接龙[https://leetcode-cn.com/probl...

  • 单词接龙

    10.06 [codevs] 单词接龙题记 题目: 题目描述 Description 输入描述 Input Des...

  • 单词接龙

    题目 给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWo...

  • leetcode127 单词接龙

    题目 单词接龙 分析 分析同leetcode433 最小基因变化 代码

  • 127. 单词接龙

    127. 单词接龙[https://leetcode-cn.com/problems/word-ladder/] ...

  • 12 - Hard - 单词接龙

    定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的...

  • 127. 单词接龙

    题目描述 给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 end...

  • 127. 单词接龙

    https://leetcode-cn.com/problems/word-ladder/

  • LeetCode - #127 单词接龙

    前言 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swi...

  • LeetCode 126-130

    126. 单词接龙 II[https://leetcode-cn.com/problems/word-ladder...

网友评论

      本文标题:单词接龙

      本文链接:https://www.haomeiwen.com/subject/axdyyttx.html