洛谷——P1098 字符串的展开
P1098 字符串的展开
题目描述
在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母或数字串替代其中的减号,即,将上面两个子串分别输出为“defgh”和“45678”。在本题中,我们通过增加一些参数的设置,使字符串的展开更为灵活。具体约定如下:
(1) 遇到下面的情况需要做字符串的展开:在输入的字符串中,出现了减号“-”,减号两侧同为小写字母或同为数字,且按照ASCII码的顺序,减号右边的字符严格大于左边的字符。
(2) 参数p1:展开方式。p1=1时,对于字母子串,填充小写字母;p1=2时,对于字母子串,填充大写字母。这两种情况下数字子串的填充方式相同。p1=3时,不论是字母子串还是数字字串,都用与要填充的字母个数相同的星号“*”来填充。
(3) 参数p2:填充字符的重复个数。p2=k表示同一个字符要连续填充k个。例如,当p2=3时,子串“d-h”应扩展为“deeefffgggh”。减号两边的字符不变。
(4) 参数p3:是否改为逆序:p3=1表示维持原来顺序,p3=2表示采用逆序输出,注意这时候仍然不包括减号两端的字符。例如当p1=1、p2=2、p3=2时,子串“d-h”应扩展为“dggffeeh”。
(5) 如果减号右边的字符恰好是左边字符的后继,只删除中间的减号,例如:“d-e”应输出为“de”,“3-4”应输出为“34”。如果减号右边的字符按照ASCII码的顺序小于或等于左边字符,输出时,要保留中间的减号,例如:“d-d”应输出为“d-d”,“3-1”应输出为“3-1”。
输入输出格式
输入格式:
输入文件expand.in包括两行:
第1行为用空格隔开的3个正整数,依次表示参数p1,p2,p3。
第2行为一行字符串,仅由数字、小写字母和减号“-”组成。行首和行末均无空格。
输出格式:
输出文件expand.out只有一行,为展开后的字符串。
输入输出样例
1 2 1 abcs-w1234-9s-4zz
abcsttuuvvw1234556677889s-4zz
2 3 2 a-d-d
aCCCBBBd-d
说明
40%的数据满足:字符串长度不超过5
100%的数据满足:1<=p1<=3,1<=p2<=8,1<=p3<=2。字符串长度不超过100
NOIP 2007 提高第二题
一个·大模拟、、
第一遍60分、、
1.忘记-前面的数一定要比后面的数小这件事了、、、
2.在当前字符为-时,一定还要注意一种情况即为这个-在最前面,这种情况我们直接把这个字符输出
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define N 1010 using namespace std; char ch[N]; int p1,p2,p3,x,y; char a[27]={0,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; char A[27]={0,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; int read() {int x=0,f=1; char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f; } int pd(char ch) {if(ch>='0'&&ch<='9') return 1;if(ch>='A'&&ch<='Z') return 2;if(ch>='a'&&ch<='z') return 3;return 0; } int main() {p1=read(),p2=read(),p3=read();cin>>ch;int l=strlen(ch);for(int i=0;i<l;i++){if(ch[i]!='-') {cout<<ch[i];continue;}if(ch[i]=='-') {if(pd(ch[i-1])!=pd(ch[i+1])||ch[i-1]>=ch[i+1]||i==0)cout<<ch[i]; else {if(pd(ch[i-1])==1) {x=ch[i-1]-'0'+1,y=ch[i+1]-'1';if(p1==3)for(int j=x;j<=y;j++)for(int k=1;k<=p2;k++) cout<<"*";else{if(p3==1)for(int j=x;j<=y;j++)for(int k=1;k<=p2;k++)cout<<j;else for(int j=y;j>=x;j--)for(int k=1;k<=p2;k++)cout<<j;}}else{if(pd(ch[i-1])==2) x=ch[i-1]-'A'+2,y=ch[i+1]-'A';if(pd(ch[i-1])==3) x=ch[i-1]-'a'+2,y=ch[i+1]-'a';if(p1==3)for(int j=x;j<=y;j++)for(int k=1;k<=p2;k++) cout<<"*";else{if(p3==1){if(p1==1)for(int j=x;j<=y;j++)for(int k=1;k<=p2;k++)cout<<a[j];else for(int j=x;j<=y;j++)for(int k=1;k<=p2;k++)cout<<A[j];}else {if(p1==1)for(int j=y;j>=x;j--)for(int k=1;k<=p2;k++)cout<<a[j];else for(int j=y;j>=x;j--)for(int k=1;k<=p2;k++)cout<<A[j];} }}}}}return 0; }
转载于:https://www.cnblogs.com/z360/p/7688523.html
洛谷——P1098 字符串的展开相关推荐
- 洛谷 P1098 字符串的展开
洛谷 P1098 字符串的展开 传送门 I'm here! 思路 大暴力字符串题 这个题让我们展开一个字符串\(某字符-某字符\),并且有三个参数对应几种不同的输出方式,首先想到打暴力,因为串特别小, ...
- 洛谷P1098 字符串的展开【字符串】【模拟】
题目描述 在初赛普及组的"阅读程序写结果"的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于"d-h"或者"4-8" ...
- 信息学奥赛一本通 1848:【07NOIP提高组】字符串的展开 | OpenJudge NOI 1.7 35:字符串的展开 | 洛谷 P1098 [NOIP2007 提高组] 字符串的展开
[题目链接] ybt 1848:[07NOIP提高组]字符串的展开 OpenJudge NOI 1.7 35:字符串的展开 洛谷 P1098 [NOIP2007 提高组] 字符串的展开 [题目考点] ...
- 字符串的展开(洛谷-P1098)
题目描述 在初赛普及组的"阅读程序写结果"的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于"d-h"或者"4-8" ...
- 洛谷·[SCOI2003]字符串折叠
初见安~这里是传送门:洛谷 P4302 题目描述 折叠的定义如下: 一个字符串可以看成它自身的折叠.记作S = S X(S)是X(X>1)个S连接在一起的串的折叠.记作X(S) = SSSS-S ...
- 字符串的展开(洛谷P1098题题解,Java语言描述)
题目要求 P1098题目链接 分析 这题最令我崩溃的是各种特殊情况,特别是结尾部分的处理. p1.p2.p3 的操作要处理好,但真正恶心的就是如何判断是可以处理的. 数值和字母不能补全 两边相同的数字 ...
- 洛谷精选 - 字符串合集
https://www.luogu.org/problemnew/lists?name=&orderitem=difficulty&tag=2&content=0&se ...
- 字符串——垂直柱状图(洛谷 P1598)
题目选自洛谷P1598 字符串的题确实够刁钻,有的明明思路很简单,但是写起来就很复杂. 这道题难点在于如何输出"柱状图". 用二维数组来存放每一行的结果再挨个输出吗? 显然这不太行 ...
- 2021寒假——洛谷刷题计划(35题)
(希望大家不要Copy) AC:Accept,程序通过. CE:Compile Error,编译错误. PC:Partially Correct,部分正确. WA:Wrong Answer,答案错误. ...
最新文章
- CentOS 6 安装极点五笔拼音输入法
- 【每周CV论文】初学GAN图像风格化必须要读的文章
- 树莓派c语言led,用树莓派实现RGB LED的颜色控制——C语言版本号
- 模板载入与模板继承的区别
- Node 即学即用 笔记 思维导图
- git commit 规范指南
- BlackBerry App之Hello World
- c语言规范标准c99中文版下载,c99标准找到了,中文HTML页面
- 《高级无线网络—4G技术》——2.3 正交频分复用
- Scrapy基础(八)————图片下载后将本地路径添加到Item中
- BT种子文件(.torrent)的具体文件结构
- 用计算机刻盘,用电脑可以刻录光盘吗?
- ios14描述文件无法与服务器连接,苹果手机的信任在哪里设置(ios14描述文件与设备管理)...
- 美图秀秀各插件适用场景
- java实现shapefile文件的解析
- ABP VNext学习日记14
- java8新特性总结——lambda表达式
- Jenkins针对不同的项目视图对不同的用户进行权限分配
- Pandas 函数方法汇总一览查询(持续补充改进)
- Codeforces 545 C Woodcutters(贪心/DP)