CMB16. 推倒吧骨牌
描述
输入描述
输入为一个长度不超过1000的,仅包含‘L’,‘R’,‘.’的字符串输出描述
根据输入,输出一个仅由‘L’,‘R’,‘.’组成的结果字符串示例1
输入:
.L.R...LR....L.
输出:
LL.RR.LLRRRLLL.
C 解法, 执行用时: 2ms, 内存消耗: 360KB, 提交时间: 2020-05-20
#include<stdio.h> #include<string.h> int main() { char d[1001]; scanf("%s",d); int len = strlen(d); int force=0; int forces[1000]={0}; for(int i=0;i<len;++i) { if(d[i]=='R') force=len; else if(d[i]=='L') force=0; else force=(force-1)>0?(force-1):0; forces[i]+=force; } force=0; for(int i=len-1;i>=0;--i) { if(d[i]=='L') force=len; else if(d[i]=='R') force=0; else force=(force-1)>0?(force-1):0; forces[i]-=force; } for(int i=0;i<len;++i) { if(forces[i]<0) printf("L"); else if(forces[i]>0) printf("R"); else printf("."); } return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 368KB, 提交时间: 2020-05-18
#include<stdio.h> #include<string.h> int main() { char d[1001]; scanf("%s",d); int len = strlen(d); int force=0; int forces[1000]={0}; for(int i=0;i<len;++i) { if(d[i]=='R') force=len; else if(d[i]=='L') force=0; else force=(force-1)>0?(force-1):0; forces[i]+=force; } force=0; for(int i=len-1;i>=0;--i) { if(d[i]=='L') force=len; else if(d[i]=='R') force=0; else force=(force-1)>0?(force-1):0; forces[i]-=force; } for(int i=0;i<len;++i) { if(forces[i]<0) printf("L"); else if(forces[i]>0) printf("R"); else printf("."); } return 0; }