Ans is too short on line 1

P1628 合并序列

@[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


|