zoukankan      html  css  js  c++  java
  • NOI2.5 8783:单词接龙

    描述

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

    输入 输入的第一行为一个单独的整数n(n<=20)表示单词数,以下n行每行有一个单词(只含有大写或小写字母,长度不超过20),输入的最后一行为一个单个字符,表示“龙”开头的字母。你可以假定以此字母开头的“龙”一定存在。 输出 只需输出以此字母开头的最长的“龙”的长度。 样例输入
    5
    at
    touch
    cheat
    choose
    tact
    a
    
    样例输出
    23
    提示

    连成的“龙”为atoucheatactactouchoose


    首先,字符串接龙这种东西,是非常恶心的,其次,处理接头的地方也不好做,最后,每个单词还可以访问两次,这也是个麻烦的地方。


    思路:先运用深搜来作为主要核心,在单独写一个函数处理字符串,先直接加上总长度,重复的长度也加上,再输出二者的差就OK   O(∩_∩)O~


    PS:

    如果你一直是五分,看看你有没有考虑以下问题:

    1、看看每个字符串是否起到最大作用。

    2、比如“adcd”和“dcde”,最大可以组合成“adcdcde”,而不是“adcde”


    AC代码如下:


    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    char a[21][21],c[20];
    int k,v[21],n;
    int check(int p,int q)
    {
    	bool eee;
    	int i,j,o,pl=strlen(a[p]),ql=strlen(a[q]);
    	for(i=1;i<min(pl,ql);i++)
    	{
    		eee=0;
    		for(j=pl-i,o=0;j<pl;o++,j++)
    			if(a[p][j]!=a[q][o])
    				eee=1;
    		if(!eee)
    			return i;
    	}
    	return 0;
    }
    void find(int s,int ss,int x)
    {
    	int i,sss;
    	for(i=0;i<n;i++)
    		if(v[i]<2)
    		{
    			sss=check(x,i);
    			if(sss)
    			{
    				v[i]++;
    				find(s+strlen(a[i]),ss+sss,i);
    				v[i]--;
    			}
    		}
    	if(s-ss>k)
    		k=s-ss;
    }
    int main()
    {
    	int i;
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    		scanf("%s",a[i]);
    	scanf("
    %c",&c[0]);
    	for(i=0;i<n;i++)
    		if(a[i][0]==c[0])
    		{
    			v[i]=1;
    			find(strlen(a[i]),1,i);
    			v[i]=0;
    		}
    	printf("%d",k+1);
    }

  • 相关阅读:
    oracle 之索引,同义词 ,关键词,视图 ,存储过程,函数,触发器
    基于TCP协议的socket通信
    支付宝支付 -即时到帐
    Hibernate延迟加载机制
    shiro 简单的身份验证 案例
    linux 试题
    程序员面试题精选100题(16)-O(logn)求Fibonacci数列[算法]
    九度OJ 1362 左旋转字符串(Move!Move!!Move!!!)【算法】
    九度OJ 1366 栈的压入、弹出序列 【数据结构】
    九度OJ 1387 斐波那契数列
  • 原文地址:https://www.cnblogs.com/Darknesses/p/12002574.html
Copyright © 2011-2022 走看看