字典树。题目并无难度,关键是怎样输入空格推出循环
用getline输入C++的字符串要加上 #include<string>..........
这题G++交会无限超内存
#include<iostream> #include<cstdio> #include<string> using namespace std; string str; struct stu { int m; stu *a[26]; stu() { m=0; for(int i=0;i<26;i++) a[i]=NULL; } }; stu *p=new stu(); void insert(stu *root,int cnt) { if(cnt==str.size()) return; int x=str[cnt]-'a'; if(root->a[x]==NULL) { root->a[x]=new stu(); } root=root->a[x]; root->m++; insert(root,cnt+1); } void solve(stu *root,int cnt) { int x=str[cnt]-'a'; root=root->a[x]; if(root==NULL) { cout<<"0"<<endl; return; } if(cnt==str.size()-1) { cout<<root->m<<endl; } else solve(root,cnt+1); } int main() { cin.sync_with_stdio(false); while(getline(cin,str)&&str!="") insert(p,0); while(cin>>str) solve(p,0); return 0; }