• 洛谷 P1019 单词接龙


    题目描述

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

    输入输出格式

    输入格式:

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

    输出格式:

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

    输入输出样例

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

    说明

    NOIp2000提高组第三题

    爆搜

    屠龙宝刀点击就送

    #include <cstring>
    #include <cstdio>
    
    int now=1,use[25],n,length;
    char str[25][100];
    void dfs(int k)
    {
        length=length>now?length:now;
        for(int i=1;i<=n;i++)
        {
            if(use[i]<2)
            {
                for(int j=0;j<strlen(str[k]);j++)
                {
                    if(str[i][0]==str[k][j])
                    {
                        int l1=j,l2=0;
                           while(str[i][l2]==str[k][l1]&&l1<strlen(str[k]))l1++,l2++;
                        if(l1>=strlen(str[k]))
                        {
                            now+=strlen(str[i])-l2;
                            use[i]++;
                            dfs(i);
                            now-=strlen(str[i])-l2;
                            use[i]--;
                        }
                    }
                }
            }
        } 
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++) scanf("%s",str[i]);
        scanf("%s",str[0]);
        dfs(0);
        printf("%d",length);
        return 0;
    }
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    DEV获取GridControl当前行
    03002_Http请求协议分析
    雷林鹏分享:CSS 组合选择符
    雷林鹏分享:Redis 字符串(String)
    雷林鹏分享:Redis 键(key)
    雷林鹏分享:CSS 布局
    雷林鹏分享:CSS Float(浮动)
    雷林鹏分享:CSS 布局
    雷林鹏分享:CSS Position(定位)
    雷林鹏分享:CSS Display(显示) 与 Visibility(可见性)
  • 原文地址:https://www.cnblogs.com/ruojisun/p/7201156.html
Copyright © 2020-2023  润新知