本文共 690 字,大约阅读时间需要 2 分钟。
#include分析: 直接把每个顶点当作峰顶,向两边推移,取最大的就可以了,当然也可以 缩点(缩进之间=的点) 然后#include #include #include #include #include using namespace std; char s[100005]; int ans[100005]; int main() { int n; while(~scanf("%d",&n)) { scanf("%s",s+1); for(int i=1;i<=n;i++) { int l=i-1,r=i,dl=1,dr=1; while(s[l]!='L'&&l>=1) if(s[l]=='R') { l--;dl++;} else if(s[l]=='=') l--; while(s[r]!='R'&&r<=n-1) if(s[r]=='L') { r++;dr++;} else if(s[r]=='=') r++; ans[i]=max(dl,dr); } for(int i=1;i<=n;i++) printf("%d ",ans[i]); printf("\n"); } return 0; }
转载地址:http://qxgsi.baihongyu.com/