成语接龙(dfs)
| 成语接龙 | ||||||
|
||||||
| 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;
}
版权声明:本文博主原创文章,博客,未经同意不得转载。
成语接龙(dfs)的更多相关文章
- NOIP2000单词接龙[DFS]
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合 ...
- 蓝桥杯—ALGO-18 单词接龙(DFS)
问题描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母, 要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次) ,在两个单词相连时,其 ...
- 再谈Weiphp公众平台开发——1、成语接龙插件
易错点,注意插件的命名 1.创建插件.在weiphp管理后台创建成语接龙插件,勾选安装后立即启用,不需要配置项和管理列表.点“确定”完成插件的创建. 2.安装插件. 3.检测插件是否成功安装.返回到w ...
- python——成语接龙小游戏
小试牛刀的简易成语接龙. 思路—— 1.网上下载成语字典的txt版本 2.通过python进行处理得到格式化的成语,并整理成字典(python字典查找速度快) 3.python程序,查找 用户输入的最 ...
- Flask开发成语接龙游戏,闲来无事手机玩玩自己写的游戏吧!
英语单词学习应用 周五发布的文章Flask开发天气查询软件,带你掌握pipenv的使用与手机Termux下的部署发布后,看到喜欢的人比较多.本来周末打算照着扇贝/极光单词,写一个英语单词自测工具.但苦 ...
- 单词接龙dfs洛谷
题目传送门:https://www.luogu.org/problem/show?pid=1019#sub 典型的爆搜,每次更新最大龙长度即可 搜索每个字符串编号,与已经连接好的字符串进行比较,以此往 ...
- HDU - 1546 ZOJ - 2750 Idiomatic Phrases Game 成语接龙SPFA+map
Idiomatic Phrases Game Tom is playing a game called Idiomatic Phrases Game. An idiom consists of sev ...
- python成语接龙小游戏
上一篇讲了小游戏的坑现在把源码放出来 #coding:utf-8 import string import pypinyin import sys import random print(" ...
- 洛谷 P1019 单词接龙 Label:dfs
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合 ...
随机推荐
- C语言的学习-基础知识点
---BOOL BOOL BOOL a = YES; printf("%d\n", a); a = NO; printf("%d", a); , b = ; B ...
- Fantageek翻译系列之《使用Autolayout显示变化高度的UITableViewCell》
这篇博客主要在于,解释如何通过仅仅使用Autolayout很很少的代码,显示高度不同的Cell.虽然标题说的是TableView,但是CollectionView同样适合.但是,这种方法只使用iOS7 ...
- 单例模式(Singleton)详解——转载
单例模式(Singleton) 首先来明确一个问题,那就是在某些情况下,有些对象,我们只需要一个就可以了, 比如,一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个, 这里就可以通过 ...
- WebDAV被启用(转)
WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议.它扩展了HTTP 1.1,在GET.POST. ...
- js过滤
datagrid: loadFilter: function (data) { return loadFilter(data); ...
- hive函数总结-日期函数
获取当前UNIX时间戳函数: unix_timestamp语法: unix_timestamp() 返回值: bigint说明: 获得当前时区的UNIX时间戳举例: hive> select u ...
- C++中cin输入类型不匹配解决方法
#include <iostream> #include <set> using namespace std; int main() { int a; cin>>a ...
- Jquery去除从数据库中查询到的内容含有的p标签
$("#topic_content").html($("#topic_content").text()); 如果这个数据是通过循环遍历出的数据,就需要下面这个代 ...
- DOM 之selection
有关文章的集合 MOZILLA 开发者网络 selection: MOZILLA DEVELOPER NETWORK document.activeElement MOZILLA DEVELOPER ...
- redis数据结构与主要命令
redis的数据类型有:string.hashes.lists.sets,sorted sets 1.string类型: set.get添加键值对获得键值对.如果多次赋值会覆盖掉原来的value se ...

