zoj 2571 Big String Outspread
2011-01-05 22:41
288 查看
看输入输出就知道啥题了 = =。。。
第一反应是,类似等价表达式,无语啦都,第一反应想到用栈。感觉好繁。然后党说他代码只有50+,刺激~就自己想去了。
开始的想法是以左括号为限制,开始展开,记录,靠左边的左括号展开的时候需要用右边左括号的已经展开的字符串,越写感觉越迷茫。而且如果有两个括号并列,是不行的。YM。
党说用递归。刚开始也想了,只不过一直对递归很抵触,就没用 = =。后来没办法,用了。居然稀里糊涂差不多对了,改了几个小地方居然A了 = =。。。好伟大。。。嘻嘻。后来觉得,这个也不难呀,(*^__^*) 嘻嘻……
第一反应是,类似等价表达式,无语啦都,第一反应想到用栈。感觉好繁。然后党说他代码只有50+,刺激~就自己想去了。
开始的想法是以左括号为限制,开始展开,记录,靠左边的左括号展开的时候需要用右边左括号的已经展开的字符串,越写感觉越迷茫。而且如果有两个括号并列,是不行的。YM。
党说用递归。刚开始也想了,只不过一直对递归很抵触,就没用 = =。后来没办法,用了。居然稀里糊涂差不多对了,改了几个小地方居然A了 = =。。。好伟大。。。嘻嘻。后来觉得,这个也不难呀,(*^__^*) 嘻嘻……
#include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> int LEN; int x; char str[260]; void output(int pos) { int i,len; if( pos >= LEN ) return; if( str[pos] == ')' ) { x = pos; //这个是解决并列括号的状况 return; } if( str[pos] == '(' ) { output(pos+1); return; } if( isalpha(str[pos]) ) { printf("%c",str[pos]); output(pos+1); return; } if( isdigit(str[pos]) ) { len = str[pos] - '0'; if( isalpha(str[pos+1]) ) { for(i=0; i<len; i++) printf("%c",str[pos+1]); output(pos+2); } if( str[pos+1] == '(' ) { for(i=0; i<len; i++) output(pos+1); output(x+1);// 因为如果不这么记录的话,并列的括号就会算在上个和它并列的左括号里 } return; } } int main() { int ncases; scanf("%d",&ncases); getchar(); while( ncases-- ) { gets(str); LEN = strlen(str); output(0); printf("/n"); } return 0; }
相关文章推荐
- ZOJ-2571 Big String Outspread 模拟
- ZOJ 2571 Big String Outspread
- ZOJ 2571 Big String Outspread
- ZOJ&nbsp;1633&nbsp;big&nbsp;string
- zoj1633 Big String dfs
- Eclipse里String.format和System.out.printf()一直报错的解决方法
- ZOJ Special AC String 水
- POJ 3660 && NYIST 211 Cow Contest && ZOJ 1060 Sorting It All Out【Floyd算法扩展应用】
- Could not read JSON: Can not deserialize instance of java.lang.String[] out of VALUE_STRING token
- String index out of range: 0
- Android Studio 2.0+发布APK出现ExternalSystemException: String index out of range: -123错误
- zoj 2388.Beat the Spread!
- java.lang.StringIndexOutOfBoundsException: String index out of range: 0错误的原因 3ff0
- BigInteger应用于概率DP ZOJ 3380 WA TLE
- BigInteger和String
- 关于异常String out of range:-1及处理方案
- String str;System.out.println(str);与String str = new String();System.out.println(str);区别
- PowerShell中使用Out-String命令把对象转换成字符串输出的例子
- openjudge9269:Big String超级字符串 详解
- 类型转换错误java.math.BigDecimal cannot be cast to java.lang.String