1019 单词接龙

news/2024/7/20 22:36:21 标签: 深度优先, 算法

1019 单词接龙

其实感觉这道题和 拼数 很像
这一道题必须得进行去重
这道题又是一道水题,因为数据不过是20,通过枚举加去重因该可以过
首先我们要分几个版块:
1.搜索函数,这个函数首先我们要枚举这n个单词,人后再对每一个单词循环枚举它的一个接龙长度,进行判断能否拼接接龙,然后做拼接操作,进行标记操作,然后递归回溯,这里记得每一次都要存最长长度保存答案
2.判断函数,这个函数比较寒碜,其实就是将两个字符串进行当前枚举的长度k,将两个字符串的前k个和后k个进行循环比较
3.拼接函数,这个函数运用了字符串的相加拼接好处,其实就是将第二个字符串除去k个的每一位加到第一个字符串里面
最后这个题就结束了
其实这个题就是一个模拟枚举
枚举每一个单词
枚举每一个拼接长度
比较水了
---------重新---------

啊啊啊啊
啊啊啊啊啊
我想去打球
这里有一个精髓就是循环枚举拼接的长度

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<string>
#include<cstring>
using namespace std;
int n;
string longg;
string word[100];
int ans;
int book[100];//标记次数 
bool pd(string longg,string jlongg,int k)
{
	int l=longg.length();
	for(int i=0;i<k;i++)
	{
		if(longg[l-k+i]!=jlongg[i])
			return 0;
	}
	return 1;
}
void add(string &longg,string jlongg,int k)
{
	int l=jlongg.length();
	for(int i=k;i<l;i++)
		longg+=jlongg[i];
}
void dfs(string longg)
{
	int l=longg.length();
	ans=max(ans,l);//最长接龙数
	for(int i=1;i<=n;i++)
	{
		if(book[i]>=2)
			continue;//此单词已选
		int ll=word[i].length();//当前选中的这个单词 
		for(int j=1;j<=ll;j++)//枚举接口长度 
		{
			if(pd(longg,word[i],j))//循环枚举接口 
			//能成立找到接口 
			{
				string temp=longg;
				add(temp,word[i],j);
				if(temp==longg)
					continue;//没什么用 
				book[i]++;//被拼接了 
				dfs(temp);
				book[i]--;
			}
		}
	 } 
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>word[i];
	}
	cin>>longg;
	dfs(longg);//搜索这个龙 
	cout<<ans<<endl; 
	return 0;
 } 

http://www.niftyadmin.cn/n/851666.html

相关文章

《C语言》运算符(4)

算术运算符 下表显示了 C 语言支持的所有算术运算符。假设变量 A 的值为 10&#xff0c;变量 B 的值为 20&#xff0c;则&#xff1a; 运算符描述实例把两个操作数相加A B 将得到 30-从第一个操作数中减去第二个操作数A - B 将得到 -10*把两个操作数相乘A * B 将得到 200/分子…

点评2009年PHP十大图书(1)

按照钟声老师和大多数老师的观点。 现在市面上的PHP教材大概有以下几种&#xff1a; 一种是学院派老师编写的&#xff0c;他们是主流&#xff0c;你看到十本PHP书&#xff0c;有九本半是这样的。他们的作者拥有让人敬仰的经历&#xff0c;如具备600余万行的代码经验&#xff08…

开源规则引擎比较_微软开源软件特征源码分析工具Application Inspector

微软近日开源了其内部使用的软件特征源码分析工具 Application Inspector。现代软件开发实践通常需要基于数百个现有组件中构建应用&#xff0c;无论它们是由组织中的另一个团队、外部供应商还是开源社区中的某个人编写的。这样虽然会带来许多好处&#xff0c;比如加快开发进度…

初中数学

初中数学 三角形 不在同一条直线上的三条线段首尾依次相连叫做三角形 三边关系&#xff0c;三角形的两边和大于第三边&#xff0c;三角形两边差小于第三边 高&#xff1a;从一个顶点向所对的边画垂线&#xff0c;垂线的长度叫做高 垂心 中线&#xff1a;连接三角形的一个顶点…

tinyxml在MFC下使用问题

2019独角兽企业重金招聘Python工程师标准>>> 今天在MFC下使用tinyXML库出现了一些问题&#xff0c;差了一下&#xff0c;有些人遇到了和我差不多的问题&#xff0c; 主要是库的冲突&#xff0c;现在还不知道怎么弄&#xff0c;我想在MFC使用tinyXML去解析界面控件的…

gif一键抠图 在线_给视频抠图?这个在线免费神器超厉害

我曾经介绍过不少去除背景的工具&#xff0c;无论是线上服务或是软件都是局限于图片去背部分。图片要处理背景可能相对简单&#xff0c;如果去背的对象换成影片&#xff0c;难度就会提高不少&#xff0c;因此才有「色键」或色彩嵌空技术&#xff0c;拍摄时使用绿幕(Greenscreen…

lsof 与fuser

2019独角兽企业重金招聘Python工程师标准>>> lsof 与fuser http://www.cnblogs.com/vigarbuaa/archive/2012/11/18/2776565.html 服务器上调试程序时&#xff0c;有时会遇到所需资源被占用的情况&#xff0c;这时就要查一下是什么程序占用了资源。需要用到lsof与fus…

2,ORM组件XCode(速览)

为什么80%的码农都做不了架构师&#xff1f;>>> 啥也不说&#xff0c;上图&#xff1a; 这是最基本的增删改查代码&#xff01; 符合X系列组件的一贯作风&#xff0c;不求万能&#xff0c;只求简单实用&#xff01; 不支持多表查询&#xff0c;所以不是万能的&a…