希望大佬能帮我看看为啥我的代码在运行样例的时候会输出两个NO,也帮我查查错,谢谢
#include <iostream>
#include <cstdio>
#include <cstring>
#define MAXN 100005
using namespace std;
int t;
int n;
int num;
int ss[11][MAXN];
string inn[MAXN];
int vis[MAXN];
int ctoi(char ch) {
return ch - '0';
}
void init() {
for (int i = 0; i <= 10; ++i) {
for (int j = 0; j <= num; ++j) {
ss[i][j] = 0;
}
}
for (int i = 0; i <= num; ++i)
vis[i] = 0;
num = 0;
}
void insert(string str) {
int u = 0;
for (int i = 0; i < str.length(); ++i) {
int ch = str[i];
if (ss[ctoi(ch)][u] == 0) {
ss[ctoi(ch)][u] = ++num;
}
u = ss[ctoi(ch)][u];
vis[u] += 1;
}
}
int search(string str) {
int u = 0;
for (int i = 0; i < str.length(); ++i) {
char ch = str[i];
if (ss[ctoi(ch)][u] == 0) {
return 0;
}
u = ss[ctoi(ch)][u];
}
return vis[u];
}
int main() {
cin >> t;
while (t--) {
init();
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> inn[i];
insert(inn[i]);
}
bool f = 0;
int aaa;
for (int i = 1; i <= n; ++i) {
if (search(inn[i]) != 0) {
aaa = i;
f = 1;
break;
}
}
cout << aaa << endl;
if (f == 1) {
cout << "NO" << endl;
}
else
cout << "YES" << endl;
}
return 0;
}
对了,这道题的YES和NO的输出是反的,希望不要对大佬造成困惑。
感谢——————