给的n的数字判断是不是前缀
#include <bits/stdc++.h>
using namespace std;
const int maxn = 10005 * 10;
string str;
int t,n;
int flag;
int trie[maxn][12],id,vis[maxn],ed[maxn];
void insert(string s) {
int p = 0;
for(int i = 0; i < s.size(); i++) {
int ch = s[i] - '0';
if (!trie[p][ch]) trie[p][ch] = ++id;
p = trie[p][ch];
if(ed[p]) flag = 0;
vis[p]++;
}
if(vis[p] >= 2) flag = 0;
ed[p]++;
}
int main(){
//freopen("in","r",stdin);
ios::sync_with_stdio(0);
cin >> t;
for(int i = 1; i <= t;i++){
cout << "Case #" << i << ": ";
cin >> n;flag = 1;
memset(vis,0, sizeof(vis));
memset(ed,0, sizeof(ed));
memset(trie,0, sizeof(trie));
id = 0;
for(int j = 1; j <= n; j++) {
cin >> str;
insert(str);
}
if(flag) cout << "Yes" << endl;
else cout << "No" << endl;
}
return 0;
}