ACM C语言算法 括号的深度
Description
经常写程序的你可能有时会因为括号不匹配而收到编译器的报错,今天你的任务不仅仅是检查括号是否匹配,还要检查一下括号最大的嵌套层数,简称深度吧.括号匹配的规则参考编程语言中的括号合法性检查.
Input
第1行:一个字符串,包含字母、数字和英文括号'('、')',长度小于10000
多组测试数据,以文件结束EOF作为输入结束
Output
每组数据输出一行,第N组数据格式如下:
第N行:代表第N组数据的结果,如果括号是匹配的,输出最大的层数,如果括号不匹配,输出Error
Sample Input
(a)(b)(c)(d)(e)(f)(g)(h)
(())(((())))
(()))
Sample Output
1
4
Error
#include
#define LEN 10000+10
int main()
{
\x05char c[LEN];
\x05int l=0,r=0,i=0,flag=1,max=0;
\x05while(scanf(%s,c)!=EOF)
\x05{
\x05\x05i=0,flag=1,max=0;
\x05\x05l=0,r=0;
\x05\x05
\x05\x05while(1)
\x05\x05{
\x05\x05\x05if(c[i]=='(')
\x05\x05\x05\x05l++;
\x05\x05\x05if(c[i]==')')
\x05\x05\x05{
\x05\x05\x05\x05r++;
\x05\x05\x05\x05if(c[i+1]!=')')//如果(==)求出最大的层数max 输出 如果!=输出Error后设置flag=0使最后的printf不输出
\x05\x05\x05\x05{
\x05\x05\x05\x05\x05if(l==r)
\x05\x05\x05\x05\x05{
\x05\x05\x05\x05\x05\x05if(max
ACM C语言算法 括号的深度
答案:1 悬赏:40 手机版
解决时间 2021-05-23 20:26
- 提问者网友:爱唱彩虹
- 2021-05-23 14:14
最佳答案
- 五星知识达人网友:鱼芗
- 2021-05-23 15:10
其实你需要的不是别人告诉你哪里错了.
你需要的只是一个能让你程序WA掉的数据.
通常都是要靠自己去想的,这里给你提供一个:
((R)(()))
答案应该是3吧,可能不对,或者你调整程序后即使这个数据过了还是有问题.
如有问题,请追问.
再问: 能否采用C的代码...还有不用堆栈可以吗 还没有学过。。。大致讲解下思路也行
再答: //思路:就是遇到左括号就保存,遇到右括号就删掉一个左括号,
//如果遇到右括号的时候左括号已经没了,那么不合法,或者最后左括号没有完全删掉,也不合法。
// 因为一直保存左括号的个数,所有可以求保存过程中的最大值
#include<stdio.h>
#include<string.h>
int main()
{
int i,ans,flag;
char str[10010];
while(scanf("%s",str)!=EOF){
int tmp=0;
for(i=ans=flag=0;str[i]!='\0';i++){
if(str[i]=='(')
tmp++;
if(tmp>ans)
ans=tmp;
if(tmp==0 && str[i]==')'){
flag=1;
break;
}
if(tmp>0 && str[i]==')')
tmp--;
}
if(tmp>0 || flag==1)
puts("Error");
else
printf("%d\n",ans);
}
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯