你的`pd()`函数返回了真,这意味着字符串`a`的长度可能长于字符串`b`的长度。被注释掉的那一行for循环里面你将更长的`a`按照相同的下标赋值到`b`,一旦循环到下标大小大于等于`b`的长度,就会RE。直接改成`b=a;`即可:
```cpp
#include<bits/stdc++.h>
using namespace std;
long long n,maxi,lenb;
string a,b;
bool pd()
{
int lena=a.size();
if(lena>lenb)return 1;
if(lena<lenb)return 0;
for(int i=0;i<lena;i++)
{
if(a[i]>b[i])return 1;
if(a[i]<b[i])return 0;
}
return 0;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a;
if(pd())
{
lenb=a.size();
//for(int j=0;j<lenb;j++)b[j]=a[j];
b = a;
maxi=i;
}
}
cout<<maxi<<endl;
for(int i=0;i<lenb;i++)cout<<b[i];
return 0;
}
```
by JustPureH2O @ 2024-01-24 11:12:14
@[JustPureH2O](/user/612722) 感谢大佬,A了
by fanguowei2023 @ 2024-01-24 11:23:31