栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

“terminate called after throwing an instance of ‘std::out

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

“terminate called after throwing an instance of ‘std::out

单词接龙(组成一个序列连接起来)
    • 题目
    • 爆搜可枚举序列⭐⭐⭐
    • 按顺序连接若干单词(删去重叠部分)
    • 一个访问越界error

题目

8783:单词接龙

爆搜可枚举序列⭐⭐⭐

无论是 还原文件还是单词接龙,在想要求某个组合时,因为不明白 文件碎片/单词 的排列顺序,需要深搜枚举序列
尤其这题,每个单词可用两遍,更是直指搜索
因为爆搜可以抉择每个单词用几遍

按顺序连接若干单词(删去重叠部分)
#include  
#include  
#include  
using namespace std;
const int N=55;
int next[N];
void getnext(string p){
	int len=p.size();
	int i=0;
	int j=-1;
	next[0]=-1;
	while(i
		if(j==-1||p[i]==p[j]){
			i++,j++;
			next[i]=j;
		}
		else j=next[j];
	}
}
int kmp(string t,string p,int st){
	int lt=t.size();
	int lp=p.size();
	int i=st;
	int j=0;
	while(i
		if(j==-1||t[i]==p[j]){
		i++,j++;
		}
		else j=next[j];
//		if(j==lp){//算是abcdefg  efg,所以返回得j是lp 
//		cout<
//	ios::sync_with_stdio(false);
//	cin.tie(0);
	int n;
	cin>>n;
	string str="";
	string t="";
	getline(cin,str);
	cin>>t;	
	for(int i=1;i
		cin>>str;
		getnext(str);
		int len=str.size();
//		int st=max(0,(t.size())-len);
		int st=t.size()-len;
		st=max(st,0);
		int pos=kmp(t,str,st);
		cout< 

笑死,看到题目不知道干了啥
自己臆想了一个题目属于是
最难理解得是kmp中返回得j,j指向得是模式串与主串中不匹配得第一个字符
如若一个都不匹配,最后返回得就是下标0(从-1加过来得)
写的时候,return t 放在了 while(i 一个访问越界error

C++如果遇到:

  • 1.“terminate called after throwing an instance of ‘std::out_of_range’”

  • 2.“Abort message: 'terminating with uncaught exception of type std::out_of_range”

这样的错误,极有可能是访问越界的问题。

导致越界的原因:

通常情况是在使用c++的容器的时候出现的问题,如在使用vector、map、还有string(差点忘记string也是个容器呀)等的时候出现的

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/846935.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号