首页 > 编程语言 >广州C++信奥老师解1913:【00NOIP普及组】单词接龙

广州C++信奥老师解1913:【00NOIP普及组】单词接龙

时间:2024-09-27 08:52:38浏览次数:1  
标签:00NOIP string int s1 pos C++ substr 接龙 size

 【题目描述】

 

【输出】

 

样例连成的“龙”为atoucheatactactouchoose

#include <bits/stdc++.h>
using namespace std;
int v[21],ans=0,n;
string a[21];
int getPos(string s1,string s2) //beast和astonish 例 ast 则返回位置2,但实际把后面onish接上去 
{
    for(int i=0; i< min(s1.size(),s2.size()); i++)  
    	if( s1.substr(s1.size()-i-1) ==s2.substr(0,i+1) )  
    		return i;    
	return -1;
}
void dfs(string s)
{ 
	ans=max(ans,(int)s.size()); //求取龙的最长长度 
	for(int i=1;i<=n;i++)
	{
		if(v[i]>=2) //已经使用过单词两次 
			continue;
		int pos=getPos(s,a[i]);
		if(pos!=-1)	//能接上
		{
			v[i]++;
			dfs( s+ a[i].substr(pos+1) );//beast和astonish 例 ast 则返回位置2,但实际把后面onish接上去 
			v[i]--; //回溯 
		}//if
	}//for
}
int main()
{
	cin>>n;
  	for(int i=1; i<=n; i++)
  		cin>>a[i];
  	string s;
  	cin>>s;
  	dfs(s);
  	cout<<ans;
  	return 0;
}


标签:00NOIP,string,int,s1,pos,C++,substr,接龙,size
From: https://www.cnblogs.com/nanshaquxinaosai/p/18434939

相关文章

  • Open3D 点云分割之最小图割算法(C++)
    文章目录一、原理概述1.1基本原理1.2最小割算法二、实现代码三、实现代码参考资料一、原理概述1.1基本原理(1)首先用一个无向图G=<V,E>来表示要分割的点云,V和E分别是顶点和边的集合(构建无向图),其中每条边均有着相应的权重。不同于普通的图结构,GraphCuts图......
  • 在 VS Code 中配置 C/C++ 开发环境(详细指南)
    前言VisualStudioCode(VSCode)是一个广泛使用的代码编辑器,支持多种编程语言,包括C和C++。本指南将详细介绍如何在VSCode中设置C/C++开发环境,适合新手。1.安装编译器1.1.Windows系统推荐使用MinGW-w64:下载MinGW-w64访问MinGW-w64官网。选择适合你系统......
  • 每天学点C++之引用
    一概述请大家先看一段代码:#include<iostream>usingnamespacestd;intmain(){ inta=3; int&b=a; cout<<&b<<endl; cout<<&a<<endl; b=4; cout<<a<<endl; cout<<b<<endl; ret......
  • C++实现一个配置系统
    开发环境Qt6& boost目标通过模板的匹配方式,实现key-value的配置读取方式,value支持基本类型及自定义类型。实现通过重载类型转换类Transformer实现多种类型的和QString的转换#include<QString>#include<QJsonDocument>#include<QJsonObject>#include<QJsonArray>......
  • 【C++习题】2.双指针_移动零
    文章目录题目链接:题目描述:解法(快排的思想:数组划分区间-数组分两块):C++算法代码:图解题目链接:283.移动零题目描述:解法(快排的思想:数组划分区间-数组分两块):双指针算法,利用数组下标充当指针。我们可以用一个cur指针来扫描整个数组,另一个dest指针用来记......
  • 【Py/Java/C++三种语言OD独家2024E卷真题】20天拿下华为OD笔试之【哈希表】2024E-选修
    可上欧弟OJ系统练习华子OD、大厂真题绿色聊天软件戳oj1441了解算法冲刺训练(备注【CSDN】否则不通过)文章目录相关推荐阅读题目描述与示例题目描述输入输出示例一输入输出说明示例二输入输出说明解题思路代码pythonjavacpp时空复......
  • 【Py/Java/C++三种语言OD独家2024E卷真题】20天拿下华为OD笔试之【DFS/BFS】2024E-开
    可上欧弟OJ系统练习华子OD、大厂真题绿色聊天软件戳oj1441了解算法冲刺训练(备注【CSDN】否则不通过)文章目录相关推荐阅读题目描述与示例题目描述输入输出示例一输入输出说明示例二输入输出解题思路代码解法一:BFSpythonjavacpp......
  • C++ day07
    C++笔试题合集:1、什么是虚函数?什么是纯虚函数?    1>在类中定义函数时,在函数名前加上virtual关键字,该函数就是虚函数,虚函数可以保证在父子类中只有一个该函数。    2>当虚函数头=0;时该函数就是纯虚函数,当类中的某些成员函数没有实现的意义,仅仅时该类中拥有......
  • 【C++】你对vector的了解又有多少呢?
    【C++】你对vector的了解又有多少呢?一.vector的介绍二.vector的使用1.vector的构造代码举例:2.vector空间增长问题resize机制:reserve扩容机制:3.vector增删查改代码举例一:代码举例二:一.vector的介绍vector是表示可变大小数组的序列容器。就像数组一样,vect......
  • C++ 原始字符串(raw string literal )R“(...)“
    C++11可以在代码里嵌入一段原始字符串,该原始字符串不作任何转义,所见即所得。这个特性对于编写代码时要输入多行字符串,或者含带有特殊字符的字符串提供了巨大方便。语法:     R"(...)"记忆点:1.不做任何转义 stringstr="aaa\nbbb\nccc\n"; cout<<str<<endl......