关闭

单词接龙

361人阅读 评论(0) 收藏 举报

思路,先提取首尾字母,组成两个字符串/字符数组。然后排序之后求两个字符数组/字符串的最大公共子序列

再判断最长公共子序列的长度是否等于源字符串的长度/源字符串长度-1

代码如下;

using namespace std;
void swap(char &a,char &b)
{
    char temp=a;
    a=b;
    b=temp;
}
void paixu(char str[],int num)
{
    for(int i=0;i<num-1;i++)
    {
        for(int j=0;j<num-i-1;j++)
        {
            if(str[j]>str[j+1])
                swap(str[j],str[j+1]);
        }
    }
}


int canArrangeWords(int num,char** arr){
    // WRITE YOUR CODE HERE
    char CharA[num];
    char CharB[num];
    for(int i=0;i<num;i++)
    {
        int len=strlen(arr[i]);
        //提取首字母
        CharA[i]=*arr[i];
        //提取尾字母
        CharB[i]=*(arr[i]+len-1);
        
    }
  //  sort(CharA,CharA+num);
  //  sort(CharB,CharB+num);
    paixu(CharA,num);
    paixu(CharB,num);
    int dp[num+1][num+1];
    memset(dp,0,sizeof(dp));
    for(int j=0;j<num+1;j++)
    {
        dp[j][0]=0;
    }
    for(int k=0;k<num+1;k++)
    {
        dp[0][k]=0;
    }
    for(int t=1;t<num+1;t++)
    {
        for(int v=1;v<num+1;v++)
        {
            if(CharA[t-1]==CharB[v-1])
            {
                dp[t][v]=dp[t-1][v-1]+1;
            }
            else
            {
                dp[t][v]=max(dp[t-1][v],dp[t][v-1]);
            }
        }
    }
    
    if(dp[num][num]==num-1 || dp[num][num]==num)
        return 1;
        else return -1;


}
// FUNCTION SIGNATURE ENDS


// DO NOT IMPLEMENT THE main( ) METHOD

0
0
查看评论

lintcode-单词接龙-120

给出两个单词(start和end)和一个字典,找到从start到end的最短转换序列 比如: 每次只能改变一个字母。 变换过程中的中间单词必须在字典中出现。 您在真实的面试中是否遇到过这个题? 样例 给出数据如下: start = "hit" end = "...
  • ljlstart
  • ljlstart
  • 2015-09-13 20:42
  • 1947

蓝桥杯 算法训练 单词接龙 By Assassin [搜索水题]

问题描述   单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast和astonish,如果接成一条龙则变为beastonish,另...
  • qq_35078631
  • qq_35078631
  • 2017-03-18 11:32
  • 876

lintcode,单词接龙

给出两个单词(start和end)和一个字典,找到从start到end的最短转换序列 比如: 每次只能改变一个字母。 变换过程中的中间单词必须在字典中出现。 注意事项 如果没有转换序列则返回0。 所有单词具有相同的长度。 所有单词都只包含小写字母。 样例 给出数据如下: sta...
  • zsjmfy
  • zsjmfy
  • 2016-12-22 14:23
  • 663

算法训练 单词接龙

问题描述   单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast和astonish,如果接成一条龙则变为beastonish,另...
  • github_33890270
  • github_33890270
  • 2016-04-19 17:28
  • 1871

百度2017暑期实习生编程题-单词接龙

测试链接:http://www.nowcoder.com/question/next?pid=1725826&qid=44807&tid=3554159 拉姆刚开始学习英文单词,对单词排序很感兴趣。 如果给拉姆一组单词,他能够迅速确定是否可以将这些单词排列在一个列表中,使得该...
  • zmq570235977
  • zmq570235977
  • 2016-06-22 11:20
  • 1118

单词接龙

单词接龙:是指一组单词序列,任何两个相邻的单词满足前一个单词的尾字母和后一个单词的首字母相同。  接龙长度:接龙中所有单词长度之和。  如单词:tea, cat, dog, aid, fish 可以形成单词接龙:cat&#...
  • a19891024
  • a19891024
  • 2014-07-10 20:50
  • 2650

蓝桥杯 算法训练 单词接龙

ac代码转自http://blog.csdn.net/qq_35078631/article/details/63252336 逻辑缜密,思路清晰 暴力搜索解决问题 ac代码如下 #include //万能的头文件 using namespace std; int n; string s[2...
  • qq_36783389
  • qq_36783389
  • 2018-01-28 16:55
  • 49

【C++心路历程32】【NOIP2000】单词接龙【图论爆搜最长链】

【问题描述】   单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母(不是单词),请你计算以这个字母开头的长度最长的“龙”,每个单词最多在“龙”中出现两次。   要注意的是,两个单词接龙规则如下:   1、如果第一个单词的后面的连续若干字母与第二个单词...
  • ctf109
  • ctf109
  • 2017-07-26 17:30
  • 620

1018 单词接龙 (搜索 字符串处理)

题目描述 Description     单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如b...
  • qq_36238595
  • qq_36238595
  • 2017-04-03 13:38
  • 401

LintCode-单词接龙II

LintCode-单词接龙II给出两个单词(start和end)和一个字典,找出所有从start到end的最短转换序列 比如: 每次只能改变一个字母。 变换过程中的中间单词必须在字典中出现。注意事项 所有单词具有相同的长度。 所有单词都只包含小写字母。样例 给出数据如下:start = &qu...
  • linside1022
  • linside1022
  • 2017-07-01 20:27
  • 361
    个人资料
    • 访问:24893次
    • 积分:639
    • 等级:
    • 排名:千里之外
    • 原创:38篇
    • 转载:4篇
    • 译文:1篇
    • 评论:5条
    最新评论