第一次将数组的范围开到了10e5就RE了
第二次开到10e6就AC了?
不是n≤1000吗QAQ
#include <stdio.h>
using namespace std;
const int N = 100010;
int son[26][N], m, n, cnt[N], idx;
char str[N];
void insert(char str[])
{
int p = 0;
for(int i = 0; str[i]; i ++)
{
int u = str[i] - 'a';
if(!son[u][p]) son[u][p] = ++ idx;
p = son[u][p];
}
cnt[p] ++;
}
int query(char str[])
{
int p = 0;
for(int i = 0; str[i]; i ++)
{
int u = str[i] - 'a';
if(!son[u][p]) return 0;
p = son[u][p];
}
return p;
}
int main()
{
scanf("%d",&n);
for (int i = 0; i < n; i ++)
{
scanf("%s",str);
insert(str);
}
scanf("%d",&m);
for(int i = 0; i < m ; i ++)
{
scanf("%s",str);
int p = query(str);
if(cnt[p] > 0) printf("OK\n"), cnt[p] -= 2;
else if(cnt[p] == 0) printf("WRONG\n");
else if(cnt[p] < 0) printf("REPEAT\n");
}
return 0;
}
真心虚心求教orz
难道是哪里的数组越界了QAQ