| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1188 人关注过本帖
标题:括号匹配
只看楼主 加入收藏
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
结帖率:88%
收藏
已结贴  问题点数:20 回复次数:12 
括号匹配
输入第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes
我的代码,为什么没有第三个测试数据yes,但是单个测试的时候可以:
#include <stdio.h>
#include <string.h>
int main()
 {
    char ch[4][10000],ch1[4][10000];
    int i,j=0,k=0;
    int n,x;
    scanf("%d",&n);
    for(x=0;x<n;x++)scanf("%s",&ch[x]);
    for(x=0;x<n;x++)
    {
      int len=strlen(ch[x]);
       for(i=0;i<len;i++)
       {
        if(ch[x][i]=='['||ch[x][i]=='(')
            ch1[x][j++]=ch[x][i];
        else if(ch[x][i]==')'&&(ch1[x][j-1]+1==ch[x][i])||ch[x][i]==']'&&ch1[x][j-1]+2==ch[x][i])
        {
            ch1[x][j-1]=' ';
            j--;
        }
        else {printf("No\n");continue;}
       }
   
        if(j==0)printf("Yes\n");
    }
    return 0;
 }
搜索更多相关主题的帖子: include 字符串 
2013-09-04 21:10
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:7 
第一组样例输出是:NO?

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-09-04 21:55
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
对啊!第一个是no,,第二个也是no,但是就没第三个了,但是你就输入一个测试数据测试第三个就会有yes

Maybe
2013-09-04 21:59
jg658237
Rank: 7Rank: 7Rank: 7
来 自:青藏高原
等 级:黑侠
帖 子:224
专家分:529
注 册:2013-8-8
收藏
得分:7 
第三个条件不对吧????

武功再高也怕菜刀.
2013-09-04 22:14
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>
int main()
{
    char ch[5][10000],ch1[5][10000];
    int i,j=0,k=0;
    int len;//改成这样可以出现第三组,不过好像执行的结果不对,,,
    int n,x;
    scanf("%d",&n);
    for(x=0;x<n;x++)scanf("%s",&ch[x]);
    for(x=0;x<n;x++)
    {
       len=strlen(ch[x]);
       for(i=0;i<len;i++)
       {
        if(ch[x][i]=='['||ch[x][i]=='(')
            ch1[x][j++]=ch[x][i];
        else if(ch[x][i]==')'&&(ch1[x][j-1]+1==ch[x][i])||ch[x][i]==']'&&ch1[x][j-1]+2==ch[x][i])
        {
            ch1[x][j-1]=' ';
            j--;
        }
        else {printf("No\n");continue;}
        }
    
        if(j==0)printf("Yes\n");
    }
    return 0;
}

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-09-04 22:32
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
什么原因呢

Maybe
2013-09-04 22:35
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
j没有清零

Maybe
2013-09-04 22:49
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>
int main()
{
    char ch[1000],ch1[1000];
    int i,j,k;
    int len;
    int n;
    scanf("%d",&n);
    while(n--)
    {
       j=0;
       k=0;
          scanf("%s",ch);
       len=strlen(ch);
       for(i=0;i<len;i++)
       {
        if(ch[i]=='['||ch[i]=='(')
            ch1[j++]=ch[i];
        else if(ch[i]==')'&&(ch1[j-1]+1==ch[i])||ch[i]==']'&&ch1[j-1]+2==ch[i])
            j--;
        else {printf("No\n");k=1;}
        }
       if(j==0&&k==0)printf("Yes\n");
    }
    return 0;
}

我自己编了一个程序,应该可以AC吧!请指点,,

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-09-04 23:04
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:7 
回复 8楼 我叫沃恩
没细心哟,数组就小了..!

仰望星空...........不忘初心!
2013-09-04 23:06
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:0 
以下是引用Susake在2013-9-4 23:06:51的发言:

没细心哟,数组就小了..!


谢谢提醒,还真是没有仔细看题目要求!数组小了,而且小的不少,,

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-09-04 23:10
快速回复:括号匹配
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.064628 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved