[NOIP提高组2000]单词接龙

来源:互联网 发布:淘宝宝贝创建时间 编辑:程序博客网 时间:2024/06/05 00:49

题目描述
【问题描述】

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

【输入文件】

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

【输出文件】

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

输入
输出
样例输入
5
at
touch
cheat
choose
tact
a
样例输出
23
由于数据较弱,所以dfs。
具体见代码,因为不知道dfs要怎么说。

#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<iostream>using namespace std;string s[21];string st;int n,maxl=0;int tf[25];void put_tog(string &x,string y,int k)//让y接在x后面 {    int l=y.size();    for(int i=k;i<l;i++)    x+=y[i];    //cout<<x;    return;}bool can(string s,string m,int k)//判断s和m是否可以前k位匹配 {    int lens = s.size();    for(int i = 0;i < k; i ++)        if(s[lens - k + i] != m[i])            return false;    return true;}void dfs(string now){    //printf("!");    int yu=now.size();    maxl=max(maxl,yu);    for(int i=1;i<=n;i++)    {//       if(tf[i]>=2) continue;         int hu=s[i].size();        for(int j=1;j<=hu;j++)//判断从哪个位置开始可以接的         {            if(can(now,s[i],j))            {               string temp=now;               put_tog(temp,s[i],j);               if(temp==now) continue;               tf[i]++;               dfs(temp);               tf[i]--;            }        }    }}int main(){    scanf("%d",&n);    memset(tf,0,sizeof(tf));    for(int i=1;i<=n;i++)    cin>>s[i];    cin>>st;    dfs(st);    printf("%d",maxl);}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 红米4a卡机了怎么办 信而富逾期3个月怎么办 苹果6锁屏密码忘了怎么办 孕8个月咳嗽有痰怎么办 微信红包输了6万怎么办 红米3s开不了机怎么办 核载5人载了6人怎么办 我欠支付宝2万6怎么办 我47岁这个月经不来怎么办 两个月不来月经了也没怀孕怎么办 婴儿不吃奶粉母乳又不够吃怎么办 怀孕39周了还没反应怎么办 脸过敏了又红又痒怎么办 刚开的淘宝店没生意怎么办 我22岁长得显老怎么办 卡的钱被qq转走怎么办 招行u盾密码忘了怎么办 孩子上五年级了成绩非常差怎么办 红米3s开不开机怎么办 皮肤被虫子咬了红肿痒怎么办 微信被骗了1万多怎么办 6个月宝宝吃了纸怎么办 农行k宝扣了50块怎么办 4g流量用的太快怎么办 怀疑老公有外遇最明智的怎么办 咽喉疼怎么办最简单的方法如下 生完孩子后腰疼的厉害怎么办 眼睛进东西了弄不出来怎么办 18k金不给换黄金怎么办 我22岁欠了10万怎么办 1岁宝宝又吐又拉怎么办 月经10天了还没干净怎么办 舌头有异味怎么办是有口臭吗 快8个月羊水破了怎么办 25岁欠了50万债怎么办 28岁血压高150低压110怎么办 苹果6的4g网络慢怎么办 一个月染了6次头怎么办 五0二干在衣服上怎么办 刚怀孕见红了肚子不痛怎么办 我有外遇了老婆不离婚怎么办