成语接龙
Time Limit: 1000 MS Memory Limit: 32768 K
Total Submit: 92(17 users) Total Accepted: 23(14 users) Rating:  Special Judge: No
Description
给出N个成语,通过成语接龙,求接出最长龙的成语个数。

每一个成语由至少三个至多8个汉字组成,假设前一个成语的最后一个字和后一个成语的第一个字同样,那么就能够接到一起。

为了将问题简化。每一个汉字用4个字母编码取代。保证每一个汉字的都有唯一的编码。全部字母均为小写字母。且以第一个成语为開始成语, 每一个成语仅仅能够使用一次。


Input
多组測试数据,对每组数据

第一行是一个整数N。代表有N个成语。

接下来N行,每行一个成语。

(N <= 20)

Output
输出最长长度
Sample Input
5

adfkejimejlsgkeh

emiemkwlcuhelmge

gkeheohowehiemie

lmgejoewijfeabcd

emiekejlwejdadfk
Sample Output
4
Source

2014 Winter Holiday Contest 4

注意第一个成语必须是题目给的第一个成语。

。。还有这题真坑啊。假设输入while(cin>>n)一直wa,我也不知道为什么,叉姐说是出题人数据有问题,假设知道为什么的请指点一二。

。。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stack>
using namespace std;
struct node
{
char tou[5];
char wei[5];
}a[25];
char str[505];
int maxn = 1;
int visit[25];
int n; int dfs(int deep, int sum)
{
if(sum > maxn) maxn = sum; for(int i = 0; i < n; i++)
{ if(!visit[i])
{
int ok = 0;
for(int j = 0; j < 4; j++)
{
if(a[deep].wei[j] != a[i].tou[j])
{
ok = 1; }
} if(!ok)
{
visit[i] = 1;
dfs(i,sum + 1);
visit[i] = 0;
}
}
}
}
int main()
{
#ifdef xxz
freopen("in.txt","r",stdin);
#endif // xxz while(scanf("%d",&n) != EOF)
{ for(int i = 0; i < n; i++)
{
//cin>>str;
scanf("%s",str);
int len = strlen(str);
for(int j = 0; j < 4; j++)
{
a[i].tou[j] = str[j];
a[i].wei[j] = str[len-4+j];
}
}
memset(visit,0,sizeof(visit));
visit[0] = 1;
maxn = 1;
dfs(0,1);
cout<<maxn<<endl;
// printf("%d\n",maxn);
} return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

最新文章

  1. android内部培训视频_第一节
  2. WebView JS与RN进行通讯
  3. web 项目 连接mycat 读写分离失效问题,
  4. 屠龙之路_大杀技之倚天屠龙_TenthDay
  5. css3新属性@ text-shadow
  6. javascript console 函数详解 js开发调试的利器
  7. Hash索引和B树索引
  8. angular4.0命令行汇总
  9. 新手解决jsp页面&lt;%@报错的方法
  10. 【Android】Android WebView 网页输入框获取焦点
  11. CALayer 知识:创建带阴影效果的圆角图片图层和创建自定义绘画内容图层
  12. 三种方法获取Class对象的区别
  13. Python中的两种路径
  14. Oracle plsql乱码
  15. A Survey on the Security of Stateful SDN Data Planes
  16. Hadoop生态圈-hive优化手段-作业和查询优化
  17. Windows下php,mysql,apache相关安装与配置,完善中…
  18. Shell编程入门(第二版)(中)
  19. plink参数说明
  20. app测试中,ios和android的区别

热门文章

  1. Android 避免APP启动闪黑屏的解决办法(Theme和Style)
  2. VS2010使用附加进程的方式调试IIS中的页面介绍
  3. Java 日期与字符串的转换
  4. linux oracle 设置随系统自动启动数据库实例和监听
  5. tableview 分割线置最左边的解决方法
  6. 洛谷 P1656 炸铁路
  7. [C入门 - 游戏编程系列] 贪吃蛇篇(六) - 蛇实现
  8. 拼接xml时出现内存溢出解决办法
  9. debian系统下安装ssh服务
  10. python作业day3修改配置文件