成语接龙--百度2017暑期实习生编程题
来源:互联网 发布:vb编程输出九九乘法表 编辑:程序博客网 时间:2024/04/29 11:24
拉姆刚开始学习英文单词,对单词排序很感兴趣。
如果给拉姆一组单词,他能够迅速确定是否可以将这些单词排列在一个列表中,使得该列表中任何单词的首字母与前一单词的为字母相同。
你能编写一个程序来帮助拉姆进行判断吗?
输入描述:
输入包含多组测试数据。 对于每组测试数据,第一行为一个正整数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 201int 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"); } }}/*3abccdefgghijkl4abccdeffghijkxyz*/
0 0
- 成语接龙--百度2017暑期实习生编程题
- 百度2017暑期实习生编程题-单词接龙
- 百度2017暑期实习生编程题:单词接龙
- 百度2017暑期实习生编程题单词接龙
- 百度2017暑期实习生编程题
- 百度2017暑期实习生编程题
- 百度2017暑期实习生编程题
- 百度2017暑期实习生编程题
- 百度17年暑期实习生笔试题 - 单词接龙
- 百度2017年暑期实习生笔试题——单词接龙(有向欧拉图)
- 百度2017年暑期实习生笔试题——单词接龙
- 百度2017暑期实习生编程题-页面调度算法
- 页面调度算法----百度2017暑期实习生编程题
- 百度2017暑期实习生编程罪犯转移
- 百度2017暑期实习生编程钓鱼比赛
- 百度2017暑期实习生编程裁减网格纸
- 乐视2017暑期实习生笔试编程题
- 腾讯2017暑期实习生编程题
- 泛化、实现、依赖和关联的区别,组合是强关系
- android 的adt和sdk的配置
- 黄褐斑激光-百花净斑方
- 提取不重复的整数
- OpenCV之边缘检测原理及代码
- 成语接龙--百度2017暑期实习生编程题
- jvm笔记2--垃圾收集器与内存分配策略
- 面试题整理
- 一图看懂深度学习框架对比----Caffe Torch Theano TensorFlow
- MongoDB 基本教程
- cocos2d-x lua与jni层互调记录
- lldb 常用命令
- SRM 697 div2 550 推公式
- 安卓中的Model-View-Presenter模式介绍