成语接龙--百度2017暑期实习生编程题

原创 2016年08月29日 10:54:04


拉姆刚开始学习英文单词,对单词排序很感兴趣。
如果给拉姆一组单词,他能够迅速确定是否可以将这些单词排列在一个列表中,使得该列表中任何单词的首字母与前一单词的为字母相同。
你能编写一个程序来帮助拉姆进行判断吗?

输入描述:

输入包含多组测试数据。 对于每组测试数据,第一行为一个正整数n,代表有n个单词。 然后有n个字符串,代表n个单词。 保证: 2<=n<=200,每个单词长度大于1且小于等于10,且所有单词都是由小写字母组成。



输出描述:

对于每组数据,输出"Yes"或"No"


输入例子:
  3
  abc
  cdefg
  ghijkl
  4
  abc
  cdef
  fghijk
  xyz
  

输出例子:
  Yes
  No
  
/****************************************************************************
*@time 2016/08/29   10:47
*@place ctrip.15#.9f
*description    成语接龙,将单词组构建为有向图,再根据出度与入度判断是否为半欧拉图
*******************************************************************************/
#include<cstdio>
#include<cstring>
#define MAX 201
int myMap[MAX][MAX];
/*************************************************************
*@isEular       判断图是否为半欧拉图
*@parameter     int num_Of_Nodes            节点的个数
*@parameter     int* in_Degree              节点的入度
*@parameter     int* out_Degree             节点的出度
*********************************************************************/
bool isEular(int num_Of_Nodes,int* in_Degree,int* out_Degree)
{
    int in_Bigger=0;//入度比出度大一个节点数
    int out_Bigger=0;//出度比入度大一个节点数
    for(int i=0;i<num_Of_Nodes;i++)
    {
        if(in_Degree[i]-out_Degree[i]==1)
        {
            in_Bigger++;
            if(in_Bigger>1) return false;//只有一个入度比出度大一个节点
        }
        else if(out_Degree[i]-in_Degree[i]==1)
        {
            out_Bigger++;
            if(out_Bigger>1) return false;//只有一个出度比入度大一个节点
        }
        else if(out_Degree[i]!=in_Degree[i])//除了以上两种情况其他节点的出度和入度都相等
        {
            return false;
        }
        else if(out_Degree[i]==0&&in_Degree[i]==0)//出度和入度相等,但都等于零,则这个点为孤点
        {
            return false;
        }

    }
    return true;
}
int main()
{
    int n;
    char str[MAX];
    while(scanf("%d",&n)!=EOF)
    {
         bool myMap[n][n];
         char frist_Char[n];
         char last_Char[n];
         int in_Degree[n];
         int out_Degree[n];
         for(int i=0;i<n;i++)
         {
              scanf(" %s",str);
              frist_Char[i]=str[0];
              last_Char[i]=str[strlen(str)-1];
              out_Degree[i]=0;
              in_Degree[i]=0;
         }
         for(int i=0;i<n;i++ )//统计出度与入度
         {
             for(int j=0;j<n;j++)
             {
                 if(i!=j&&last_Char[i]==frist_Char[j])
                 {
                     out_Degree[i]++;
                     in_Degree[j]++;
                 }
             }
         }
         if(isEular(n,in_Degree,out_Degree))
         {
             printf("Yes\n");
         }
         else
         {
             printf("No\n");
         }
    }
}
/*
3
abc
cdefg
ghijkl
4
abc
cdef
fghijk
xyz
*/





腾讯2017暑期实习生编程题

上次做了乐视的暑期实习生编程题:http://blog.csdn.net/chenchaofuck1/article/details/51700143 今天也做了腾讯的的实习生编程题,整体感觉...
  • chenchaofuck1
  • chenchaofuck1
  • 2016年06月19日 16:55
  • 2153

腾讯2017暑期实习生编程题-构造回文

测试链接 http://www.nowcoder.com/questionTerminal/28c1dc06bc9b4afd957b01acdf046e69 给定一个字符串s,你可以从中删除一些字符,...
  • zmq570235977
  • zmq570235977
  • 2016年06月22日 20:47
  • 1014

腾讯笔试编程题(2017暑期实习生编程题)

1 编程题]构造回文 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。 输入描述: 输入数据有多组,每组包含一个字符串s...
  • qq_33323162
  • qq_33323162
  • 2016年09月12日 23:00
  • 341

我做了一个成语接龙的小程序

我是一名安卓程序员,以前没有接触过前端开发,直到有幸接手了公司的小程序项目。小程序学起来还是很快的,对于有编程经验的人,看着示例代码,对照着官方文档,几天就能上手了。...
  • a49220824
  • a49220824
  • 2017年08月24日 15:31
  • 2273

百度2017暑期实习编程题

拉姆刚开始学习英文单词,对单词排序很感兴趣。 如果给拉姆一组单词,他能够迅速确定是否可以将这些单词排列在一个列表中,使得该列表中任何单词的首字母与前一单词的为字母相同。 你能编写一个程序来帮助拉姆...
  • u014568921
  • u014568921
  • 2016年07月11日 11:47
  • 763

weiphp——成语接龙插件的对接和使用

1.成语接龙具体步骤参考地址:http://2013.idoubi.sinaapp.com/?p=425 2.下面列出里面用到的关键代码: 图中的关键代码如下所示: //dump($conf...
  • u014796999
  • u014796999
  • 2015年11月12日 18:10
  • 1273

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

测试链接:http://www.nowcoder.com/question/next?pid=1725826&qid=44807&tid=3554159 拉姆刚开始学习英文单词,对单词排序很感...
  • zmq570235977
  • zmq570235977
  • 2016年06月22日 11:20
  • 1118

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

如果将单词看成一条有向线段,那么问题就转换成了判断这些线段能否练成一个有向的欧拉通路。欧拉通路的判定方法为:除2个端点外其余节点入度=出度,1个端点入度比出度大1,一个端点入度比出度小1 ;或者,所有...
  • k16643275hn
  • k16643275hn
  • 2016年07月22日 18:23
  • 344

Java成语接龙游戏小项目实战

计划开发成语接龙游戏,拼音相同就能接。在Java技术交流群 207224939 里玩,能为群友积累分数 群文件pinyin4j-2.5.0.zip可获取汉字拼音,示例代码 http://...
  • weite27
  • weite27
  • 2016年02月25日 10:54
  • 1348

拉取百度汉语的成语接龙脚本

成语不存在或期望的接龙长度超出可查询范围时会报错,不过凑合能找到部分接龙的成语,记录之。 #encoding:GBK require 'net/http' require 'nokogiri' ...
  • mscf
  • mscf
  • 2016年07月22日 22:13
  • 931
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:成语接龙--百度2017暑期实习生编程题
举报原因:
原因补充:

(最多只允许输入30个字)