求助,数组范围
查看原帖
求助,数组范围
172234
Halex楼主2022/2/27 15:15
#include<bits/stdc++.h>
using namespace std;
int cnt=0,N,m;
bool len[1005];
struct node{
	int n[105];
	int child[30];
}nodes[500005];
int create(){
	cnt++;
	return cnt;
}
void insert(string s,int w)
{
	int p=0;
	for(int i=0;i<s.size();i++){
		if(!nodes[p].child[s[i]-'a'])
			nodes[p].child[s[i]-'a']=create();
		p=nodes[p].child[s[i]-'a'];
	}
	nodes[p].n[w]=true;
}
void search(string s)
{
	int p=0;
	for(int i=0;i<s.size();i++){
		if(!nodes[p].child[s[i]-'a'])return ;
		p=nodes[p].child[s[i]-'a'];
	}
	int k=1;
	for(int i=1;i<=N;i++)
		if(nodes[p].n[i])
			len[i]=true;
}
int main()
{
	scanf("%d",&N);
	for(int i=1;i<=N;i++){
		int l;
		scanf("%d",&l);
		for(int j=1;j<=l;j++){
			string s;
			cin>>s;
			insert(s,i);
		}
	}
	scanf("%d",&m);
	for(int i=1;i<=m;i++){
		string s;
		cin>>s;
		memset(len,false,sizeof(len));
		search(s);
		for(int j=1;j<=N;j++)
			if(len[j])printf("%d ",j);
		printf("\n");
	}
	return 0;
}

rt,这样只能拿九十分.难道数据加强后Trie做不了了?

2022/2/27 15:15
加载中...