题目描述

Io和Ao在玩一个单词游戏。

他们轮流说出一个仅包含元音字母的单词,并且后一个单词的第一个字母必须与前一个单词的最后一个字母一致。

游戏可以从任何一个单词开始。

任何单词禁止说两遍,游戏中只能使用给定词典中含有的单词。

游戏的复杂度定义为游戏中所使用的单词长度总和。

编写程序,求出使用一本给定的词典来玩这个游戏所能达到的游戏最大可能复杂度。

输入输出格式

输入格式:

输入文件的第一行,表示一个自然数N(1≤N≤16),N表示一本字典中包含的单词数量以下的每一行包含字典中的一个单词,每一个单词是由字母A、E、I、O和U组成的一个字符串,每个单词的长度将小于等于100,所有的单词是不一样的。

输出格式:

输出文件仅有一行,表示该游戏的最大可能复杂度。

输入输出样例

输入样例#1:

5
IOO
IUUO
AI
OIOOI
AOOI
输出样例#1:

16
思路:裸地搜索会TLE,所以尝试性的加上卡时,AC。
以下是两种卡时的方法:
按时间卡时:
#include<ctime>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,tim,ans;
int vis[];
char s[][];
void dfs(int num,int pre){
if(clock()-tim>) {
cout<<ans;
exit();
}
if(num>ans) ans=num;
for(int i=;i<=n;i++){
if(s[i][]==s[pre][strlen(s[pre])-])
if(!vis[i]){
vis[i]=;
dfs(num+strlen(s[i]),i);
vis[i]=;
}
}
}
int main(){
tim=clock();
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%s",s[i]);
for(int i=;i<=n;i++){
vis[i]=;
dfs(strlen(s[i]),i);
vis[i]=;
}
cout<<ans;
}
按递归层数计算时间卡时:
#include<ctime>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,tim,ans;
int vis[];
char s[][];
void dfs(int num,int pre){
tim++;
if(tim>){
cout<<ans;
exit();
}
if(num>ans) ans=num;
for(int i=;i<=n;i++){
if(s[i][]==s[pre][strlen(s[pre])-])
if(!vis[i]){
vis[i]=;
dfs(num+strlen(s[i]),i);
vis[i]=;
}
}
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%s",s[i]);
for(int i=;i<=n;i++){
vis[i]=;
dfs(strlen(s[i]),i);
vis[i]=;
}
cout<<ans;
}
正解思路:DP,本题可以用DP解决。

最新文章

  1. Mac OSX网络诊断命令
  2. rawurlencode / urlencode
  3. 20145212《Java程序设计》实验报告二 《 Java面向对象程序设计》
  4. HDU1899 Sum the K-th&#39;s(树状数组)
  5. Node.js初探之hello world
  6. netty ByteToMessageDecoder 分析
  7. 网络编程之socket(转)
  8. [SQL] 待整理3
  9. 写过的HTML标签(一)
  10. 创建 AngularJS 自定义过滤器,带自定义参数
  11. PAT (Advanced Level) 1040. Longest Symmetric String (25)
  12. BYS推荐MS前端PhoneCall面试问题整理-1
  13. Markdown使用简单示例
  14. EL表达式 与 servlvet3.0的新规范
  15. 动手实现linux中的cp命令(可自行拓展)
  16. java day01记录
  17. 从零学习Fluter(三):Flutter的路由跳转以及state的生命周期
  18. 使用vscode调试小段的typescript代码
  19. Java 破解谷歌翻译api,可以实现程序自动化翻译文章
  20. MySQL占用IO过高解决方案【转】

热门文章

  1. js 只能输入英文和数字,且首位必须是字母,字母总数不能超过3个,总长度不能超过20!
  2. ie固定table单元格宽度
  3. BA-siemens-insight_designer不支持win7 64位操作系统
  4. Oracle里schema理解
  5. Android仿IOS的AssistiveTouch的控件EasyTouch实现
  6. 普通androidproject转换为C/C++project之后,再还原成androidproject的解决方式
  7. ASP.NET—011:JavaScript报错常见问题
  8. Android自己定义控件皮肤
  9. hdu 4603 Color the Tree
  10. COGS 2580. [HZOI 2015]偏序 II