博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单词接龙 深度优先搜索 C++
阅读量:6906 次
发布时间:2019-06-27

本文共 1167 字,大约阅读时间需要 3 分钟。

题目描述

单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如beastbeastbeast 和 astonishastonishastonish ,如果接成一条龙则变为beastonishbeastonishbeastonish ,另外相邻的两部分不能存在包含关系,例如 atatat 和atideatideatide 间不能相连。

输入格式:

输入的第一行为一个单独的整数 n*n (n≤20)表示单词数,以下n*n行每行有一个单词,输入的最后一行为一个单个字符,表示“龙”开头的字母。你可以假定以此字母开头的“龙”一定存在.

输出格式:

只需输出以此字母开头的最长的“龙”的长度

来源

鉴定

读题有坑
注意max_初始化

短小精悍(?)的深搜代码:

#include 
#include
using namespace std;int n,max_;string str[20];int b[20];int mix(string str1, string str2) {//如果没有重叠部分就返回-1,否则返回重叠部分开始的位置 for(int k=str1.size()-1; k>=0; k--) {//贪心,为了让合并后的字符串尽量长一定要从后往前判断 bool r=1; int i_2=0; for(int i=k; i<=str1.size()-1; i++) { if(!(i_2<=str2.size()-1)) {//判断str2边界 r=0; break; } else if(str1[i]!=str2[i_2]) { r=0; break; } i_2++; } if(r) return k; } return -1;}void search(int cur, string s) { bool bb=1;//bb规定:0表示有至少一个解,1表示此情况无解 for(int i=0; i
>n; for(int i=0; i<=n-1; i++) cin>>str[i]; char a; cin>>a; for(int i=0; i

转载地址:http://qumdl.baihongyu.com/

你可能感兴趣的文章
安装opencv以及遇到的坑
查看>>
C# 匿名函数
查看>>
MySQL锁系列2 表锁
查看>>
Lua中的closure(闭合函数)
查看>>
一个int类型引发的bug
查看>>
js 片段 - 控制类型为 text 的 input 类型
查看>>
CentOS安装中文支持(linux中文文件名乱码)
查看>>
[原创]ExtAspNet秘密花园(二) — 一切从头开始
查看>>
Delphi 常用控件之TlistView总结
查看>>
QUnit系列 -- 1.介绍单元测试(上)
查看>>
开发API文档相关问题(*.chm)
查看>>
分布拟合——正态/拉普拉斯/对数高斯/瑞利 分布
查看>>
隐藏执行批处理bat文件
查看>>
函数y=sin(1/x)曲线
查看>>
WebStorm for Mac(Web 前端开发工具)破解版安装
查看>>
computational biology | Bioinformatician | 开发者指南
查看>>
从0开始--倒序输出。
查看>>
吉特仓库管理系统-.NET打印问题总结
查看>>
POJ 3026 Borg Maze(bfs+最小生成树)
查看>>
sqlplus 返回2 由于命令后没有加分号
查看>>