为啥用scanf会RE啊???
查看原帖
为啥用scanf会RE啊???
1003901
Angela2022楼主2024/6/23 09:43
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e4+10,maxm=1e5+10;
int n,m;
string s;
int tot,dic[maxn*50][30],cnt[maxn*50];
bool vis[maxn*50];
void build(string a){
	int p=0;
	for(int i=0;i<a.length();i++){
		if(!dic[p][a[i]-'a'])dic[p][a[i]-'a']=++tot;
		p=dic[p][a[i]-'a'];
	}
	cnt[p]++;
}
void check(string a){
	int p=0;
	for(int i=0;a[i];i++){
		if(!dic[p][a[i]-'a']){
		    printf("WRONG\n");
		    return;
		}
		p=dic[p][a[i]-'a'];
	}
	if(vis[p]){
	    printf("REPEAT\n");
	    return;
	}
	vis[p]=1;
	printf("OK\n");
	return;
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
	    scanf("%s",&s);
	    build(s);
	}
	scanf("%d",&m);
	for(int i=1;i<=m;i++){
		scanf("%s",&s);
		check(s);
	}
	return 0;
}

会显示:terminate called after throwing an instance of ‘std::bad_alloc‘ what(): std::bad_alloc

改成cin就全好了

2024/6/23 09:43
加载中...