@[w4188](/user/504297) 尽量不要使用自己写的 `in()` 函数,建议使用 `cin` 读入,你这个应该是没吃换行吧
AC code:
```cpp
#include<bits/stdc++.h>
using namespace std;
int n;
string a[100005],t;
inline string in(){
string s;
char c=getchar();
while(c==' '||c=='\n') c=getchar();
while(c!=' '&&c!='\n') s+=c,c=getchar();
return s;
}
inline bool cmp(string p,string q){
if(p.size()<q.size()) return 0;
for(int i=0;i<q.size();i++) if(p[i]!=q[i]) return 0;
return 1;
}
inline void out(string s){
for(int i=0;i<s.size();i++) putchar(s[i]);
putchar('\n');
}
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
cin>>t;
sort(a+1,a+1+n);
for(int i=1;i<=n;i++) if(a[i].find(t) == 0) out(a[i]);
return 0;
}
``
by Elgo87 @ 2022-02-03 21:53:54
@[w4188](/user/504297) 快读炸了
by miaojintao @ 2022-02-03 21:58:39
@[w4188](/user/504297) 毛病有点多:
1. 你试着输出字符串,应该是空白的(没调试过,不保证),应该是你错的原因,用`cin&cout`。
2. 排序有问题,比大小你肯定要比个`<`或`>`啊,用`!=`干嘛呢?
3. 后面的操作是前缀,你还比2个的长度,肯定不行啊。
4. 最后我想问你一句,你确定试了样例?
改完的:
```cpp
#include<bits/stdc++.h>
using namespace std;
int n;
string a[100005],t;
inline bool cmp(string p,string q){
if(p.size()<q.size()) return 0;
for(int i=0;i<q.size();i++)
if(p[i]<q[i]) return 0;
else if(p[i]>q[i]) return 1;//比较个大小出来
return 1;
}
bool cmp2(string p,string q){
for(int i=0;i<q.size();i++)
if(p[i]!=q[i])
return 0;
return 1;
}//单独写一个
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
cin>>t;//用cin
sort(a+1,a+1+n);
for(int i=1;i<=n;i++) if(cmp2(a[i],t)) cout<<a[i]<<endl;//cout
return 0;
}
```
by ssxvngn @ 2022-02-03 21:59:14