sdut 第三届ACM/ICPC程序设计知识竞赛网络赛 字符串拓展
2013-05-27 23:05
337 查看
字符串扩展
Time Limit: 1000MS Memory limit: 65536K
题目描述
Tom有些时候为了记录的方便,常常将一些连续的字符用扩展符'-'简单表示。比如abcdefg可以简写为a-g,即用起始的字符和终止字符中间加上一个扩展符'-'来表示这个字符串。但是为了处理的方便,Tom又必须将这些我们简单记法扩展成原来的字符串。很明显要是人工来做的话必定很麻烦,Tom知道计算机可以帮助他完成这个任务,但是他却不会编程,这的确让他很上火。他知道今天是山东理工大学第三届ACM校赛的日子,届时来自全校的编程爱好者都会来参加比赛,他很兴奋,因为这个困惑他良久的问题终于要被解决了。给你一个含有扩展符'-'的字符串,你的任务就是将他还原成原来的字符串。要求是只处理[a-z]、[A-Z]、[0-9]范围内的字符扩展,即只有当扩展符前后的字符同时是小写字母、大写字母或数字时并且扩展符前面的字符不大于后面的字符才进行扩展,其它情况不进行扩展,原样输出。例如:a-R、D-e、0-b、4-B等字符串都不进行扩展。
输入
第一行是一个正整数T,表示共有T组测试数据(T < 100)。下面的T行,每一行包括一个长度不大于1000的待扩展字符串.
输出
每组测试数据输出一行扩展后的字符串。
示例输入
3 ADEa-g-m02 acm-0-5-a-ac-cm-m-A-AC-CM-M Welcometothe3rdACM/ICPCCampusProgrammingContestofSDUT-1-3-A-z-a-Z
示例输出
ADEabcdefghijklm02 acm-012345-aaccmm-AACCMM Welcometothe3rdACM/ICPCCampusProgrammingContestofSDUT-123-A-z-a-Z
提示
本题思路:先输入一串字符串,判断'-'两端的字符是否符合[a-z]、[A-Z]、[0-9]范围内,如果符合则删掉‘-’
,并按照两端字符的ascii码输入两字符
中间的字符,不符合条件直接输出。
#include <stdio.h> #include <string.h> char str[30000]; int main() { int num,i; scanf("%d",&num); scanf("%*c"); for(i = 1;i <= num;i++) { int len,j,m1 = 0,m2 = 0,m; scanf("%s",str); len = strlen(str); for(j = 0;j < len;j++) { if(j == 0 || j == len-1 ) { printf("%c",str[j]); }else { if(str[j] == '-'&&str[j-1] >= '0'&&str[j+1] <='9'&&str[j+1] >= str[j-1]) { m1 = str[j-1] + 1; m2 = str[j+1] - 1; //判断字符ascii for(m = m1;m <= m2;m++) printf("%c",m); m1 = 0; m2 = 0; }else if(str[j-1] >= 'A'&&str[j]=='-'&&str[j+1] <= 'Z'&&str[j+1] >= str[j-1]) { m1 = str[j-1] + 1; m2 = str[j+1] - 1; for(m = m1;m <= m2;m++) printf("%c",m); m1 = 0; m2 = 0; }else if(str[j-1] >= 'a'&&str[j]=='-'&&str[j+1] <= 'z'&&str[j+1] >= str[j-1]) { m1 = str[j-1] + 1; m2 = str[j+1] - 1; for(m = m1;m <= m2;m++) printf("%c",m); m1 = 0; m2 = 0; }else { printf("%c",str[j]); } } } printf("\n"); } return 0; } /* #include<stdio.h> #include<string.h> int main() { int n; scanf("%d",&n); char st[1001]; int k; int i; int j; int t; scanf("%*c"); while(n--) { scanf("%s",st); k=strlen(st); for(i=0;i<k;i++) { if(i==0||i==k-1)printf("%c",st[i]); else if(st[i]=='-'&&(st[i-1]>='0'&&st[i+1]<='9'||st[i-1]>='a'&&st[i+1]<='z'||st[i-1]>='A'&&st[i+1]<='Z')&&st[i-1]<=st[i+1]) { t=st[i+1]-st[i-1]; for(j=0;j<t-1;j++) { st[i-1]+=1; printf("%c",st[i-1]); } } else printf("%c",st[i]); } printf("\n"); } return 0; } */
相关文章推荐
- 【replace的用法】第三届ACM/ICPC程序设计知识竞赛网络赛—— 字符串扩展
- 【replace的用法】第三届ACM/ICPC程序设计知识竞赛网络赛—— 字符串扩展
- SDUT 2410 Mine Number 2012年山东省第三届ACM大学生程序设计竞赛题
- 安徽大学第三届ACM/ICPC 程序设计竞赛现场赛-取数字问题
- SDUT 2408 Pick apples(完全背包+贪心)2012年"浪潮杯"山东省第三届ACM大学生程序设计竞赛
- ACM/ICPC黑龙江省第四届大学生程序设计竞赛网络预选赛有感
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛 -Happy Number
- SDUT 2165 Crack Mathmen(快速幂)山东省第二届ACM大学生程序设计竞赛
- 2012年"浪潮杯"山东省第三届ACM大学生程序设计竞赛——n a^o7 !
- SDUT 2879 Colorful Cupcakes (2014年山东省第五届ACM大学生程序设计竞赛)
- ACM-南京理工大学第八届程序设计竞赛-网络赛(2016.04.17)
- ACM学习历程—NPU 2015年陕西省程序设计竞赛网络预赛(正式赛)A题 小女警的异世界之战(dfs && 分治)
- SDUT 2157 Greatest Number (二分) 2010年山东省第一届ACM大学生程序设计竞赛
- 2012年"浪潮杯"山东省第三届ACM大学生程序设计竞赛:The Best Seat in ACM Contest
- [2012山东省第三届ACM大学生程序设计竞赛]——Fruit Ninja II
- 2012年"浪潮杯"山东省第三届ACM大学生程序设计竞赛--n a^o7 ! 分类: 比赛 2015-06-09 17:16 14人阅读 评论(0) 收藏
- 字符串 —— 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 —— 易彰彪的一张表
- ACM学习历程—NPU 2015年陕西省程序设计竞赛网络预赛(正式赛)E题 简单题(同余 && 快速幂)
- sdut 2153 Clockwise (2010年山东省第一届ACM大学生程序设计竞赛)
- ACM/ICPC中国·哈尔滨工程大学第八届程序设计竞赛 1006 Find Fractions