为什么后三个点RE?

P1781 宇宙总统

你的`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


|