NIT-OJ-1022-展开字符串-解题报告
来源:互联网 发布:淘宝联盟推广qq群教程 编辑:程序博客网 时间:2024/05/21 14:42
在纺织CAD系统开发过程中,经常会遇到纱线排列的问题。该问题的描述是这样的:常用纱线的品种一般不会超过25种,所以分别可以用小写字母表示不同的纱线 ,例如:abc表示三根纱线的排列;重复可以用数字和括号表示,例如:2(abc)表示abcabc;1(a)=1a表 示a;2ab表示aab;如果括号前面没有表示重复的数字出现,则就可认为是1被省略了,如:cd(abc)=cd1 (abc)=cdabc;这种表示方法非常简单紧凑,也易于理解;但是计算机却不能理解。为了使计算机接受, 就必须将简单紧凑的表达方式展开。某ACM队接受了此项任务。现在你就是该ACM队的一员,请你把这个 程序编写完成。 已知条件:输入的简单紧凑表达方式的长度不超过250个字符;括号前表示重复的数不超过 1000;不会出现除了数字、括号、小写字母以外的任何其他字符;不会出现括号不配对等错误的情况( 错误处理已由ACM其他队员完成了)。 输入和输出要求:本题有多个测试数据组,第一行输入的就是数据组数N,接着就是N行表达式 ,表达式是按照前面介绍的意义书写的。输出时含有N行,每行对应一个输入的表达式。
Sample Input21(1a2b1(ab)1c)3(ab2(4ab))
Sample Outputabbabcabaaaabaaaababaaaabaaaababaaaabaaaab
读题可知:
单个字符串可能包含的情况:
1. 1a
2. 1(a)
3. a
4. (a)
因此相对于每一层: 开头可能 数字开始,字母开始,‘(’开始;中间 "(...)",也可能是 开头的重复; 最后仍可能重复开始的情况。 所以递归程序比较容易实现...
此递归程序设计:
1.*P 传递 判断第一个字符是什么 是数字转 2 ,是字母转3 ,是‘('转4,是‘/0' 返回 '/0';是')',返回 P+1;
2.循环取数字,直到判断为非数字,数字值存 Temp ,是字母转3,是'('转4
3.循环打印该字符,直到Temp 为 0,p++ 后返回 传递P执行1 ;
4.循环Temp次执行传递P执行1 结束循环,记录返回的地址 *p, 返回 传递(记录的地址)执行1;
递归基本设计步骤:
每一个递归程序都遵循相同的基本步骤:
初始化算法。递归程序通常需要一个开始时使用的种子值(seed value)。要完成此任务,可以向函数传递参数,或者提供一个入口函数,这个函数是非递归的,但可以为递归计算设置种子值。 检查要处理的当前值是否已经与基线条件相匹配。如果匹配,则进行处理并返回值。 使用更小的或更简单的子问题(或多个子问题)来重新定义答案。 对子问题运行算法。 将结果合并入答案的表达式。 返回结果。 递归程序容易出现问题..所以最好想清楚或者把过程写下来再编码,才能避免出错...
Sample Input21(1a2b1(ab)1c)3(ab2(4ab))
Sample Outputabbabcabaaaabaaaababaaaabaaaababaaaabaaaab
读题可知:
单个字符串可能包含的情况:
1. 1a
2. 1(a)
3. a
4. (a)
因此相对于每一层: 开头可能 数字开始,字母开始,‘(’开始;中间 "(...)",也可能是 开头的重复; 最后仍可能重复开始的情况。 所以递归程序比较容易实现...
此递归程序设计:
1.*P 传递 判断第一个字符是什么 是数字转 2 ,是字母转3 ,是‘('转4,是‘/0' 返回 '/0';是')',返回 P+1;
2.循环取数字,直到判断为非数字,数字值存 Temp ,是字母转3,是'('转4
3.循环打印该字符,直到Temp 为 0,p++ 后返回 传递P执行1 ;
4.循环Temp次执行传递P执行1 结束循环,记录返回的地址 *p, 返回 传递(记录的地址)执行1;
递归基本设计步骤:
每一个递归程序都遵循相同的基本步骤:
- NIT-OJ-1022-展开字符串-解题报告
- NIT-OJ-1024-全文检索-解题报告
- NIT-OJ-1411-恶魔杀怪-解题报告
- NIT-OJ-1449-最少硬币问题-解题报告
- 07noip 字符串的展开 解题报告
- [NOIP2007] 字符串的展开-解题报告
- 杭电ACM 1274---展开字符串 解题报告
- 解题报告——Noip2007字符串的展开
- 【九度OJ】题目1054:字符串内排序 解题报告
- 【九度OJ】题目1192:回文字符串 解题报告
- 【九度OJ】题目1206:字符串连接 解题报告
- uva oj 10603 解题报告
- uva oj 10905 解题报告
- uva oj 714解题报告
- hdu oj 1978解题报告
- hdu oj 1010解题报告
- 九度OJ解题报告
- [LeetCode OJ] Candy 解题报告
- xfree86 进不去时的方法
- 网络英语 第一章
- Fedora Linux系统中NTFS分区挂载的方法
- NIT-OJ-1024-全文检索-解题报告
- 搞笑短信用英文写起来啥样呢……
- NIT-OJ-1022-展开字符串-解题报告
- The Relationship Between ZB,NB,SB and LP 第一篇
- NIT-OJ-1411-恶魔杀怪-解题报告
- 主要关于C的标准化输输出
- 6个跟踪网站流量的站点[译文109]
- NIT-OJ-1449-最少硬币问题-解题报告
- 无向连通图的生成树个数
- System.Management.ManagementException: 访问遭到拒绝的解决方案
- 开博