首页 > 代码库 > vijos 1379 字符串的展开
vijos 1379 字符串的展开
23333333333333333
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define maxn 1005000char s[maxn],t[maxn],p[maxn];int p1,p2,p3,top=-1,l;void work(int x){ int l=s[x-1],r=s[x+1],cnt=0; if ((s[x-1]<=‘9‘) && (s[x+1]>‘9‘)) {t[++top]=‘-‘;return;} if ((s[x-1]==‘-‘) || (s[x+1]==‘-‘)) {t[++top]=‘-‘;return;} for (int i=l+1;i<=r-1;i++) { for (int j=1;j<=p2;j++) { if (p1==3) { p[++cnt]=‘*‘; continue; } if ((s[x-1]>=‘0‘) && (s[x-1]<=‘9‘)) p[++cnt]=i; else { if (p1==1) p[++cnt]=i; else if (p1==2) p[++cnt]=i-32; } } } if (p3==1) { for (int i=1;i<=cnt;i++) t[++top]=p[i]; } else { for (int i=1;i<=cnt;i++) t[++top]=p[cnt-i+1]; }}int main(){ scanf("%d%d%d",&p1,&p2,&p3); scanf("%s",s); l=strlen(s); for (int i=0;i<l;i++) { if (s[i]!=‘-‘) t[++top]=s[i]; else { if (i==0) {t[++top]=‘-‘;continue;} if (i==l-1) {t[++top]=‘-‘;continue;} if (s[i-1]==s[i+1]) t[++top]=s[i]; else if (s[i-1]>s[i+1]) t[++top]=s[i]; else work(i); } } printf("%s",t); return 0;}
vijos 1379 字符串的展开
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。