FOJ 1706 括号表达式

又是很挫的代码,很水的题目。。。

看来我只能做水题了。。。。

具体思想是用栈来实现。

 

注意最后如果括号不匹配,必定是)(的形式。

知道下面该怎么做了吧。。。

 

#include <stdio.h> int main() { char str[10001]; char stack[10001]; int p1,p2,p3,p4; char pp3[10001]; char pp4[10001]; while (scanf("%s", str)!=EOF) { p1=0; p2=0; while (str[p1]!='/0') { if (str[p1] == ')') { if (stack[p2-1] == '(') { p2--; p1++; } else { stack[p2]=str[p1]; p1++; p2++; } } else if (str[p1] == '(') { stack[p2]=str[p1]; p1++; p2++; } } stack[p2] = '/0'; if (stack[0] == '/0') { printf("%s/n", str); continue; } printf("%s/n", stack); p2=0; p3=0; p4=0; while (stack[p2] != '/0') { if (stack[p2]==')') { pp3[p3] = '('; p3++; } else if (stack[p2] == '(') { pp4[p4] = ')'; p4++; } p2++; } pp3[p3]='/0'; pp4[p4]='/0'; printf("%s%s%s/n", pp3,stack,pp4); } return 0; }

你可能感兴趣的:(FOJ 1706 括号表达式)