鱼C论坛

 找回密码
 立即注册
查看: 3057|回复: 6

有一个测试点没过

[复制链接]
发表于 2022-10-30 15:42:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 姜璟 于 2022-10-30 15:42 编辑

英文题目

英文题目

翻译后题目

翻译后题目

示例

示例

屏幕截图_20221030_152931.png
n=int(input())
while n!=0:
    s=input()
    s=list(s)
    f=2
    while(f!=1):

        if len(s)%2!=0:
            f=0
            break
        if '(' in s:
            if ')' not in s:
                f=0
                break
            else:
                if s.index('(')>s.index(')'):
                    f=0
                    break
                else: f=1
        if ')' in s:
            if '(' not in s:
                f=0
                break
            
        if '[' in s:
            if ']' not in s:
                f=0
                break
            else:
                if s.index('[')>s.index(']'):
                    f=0
                    break
                else: f=1
        if ']' in s:
            if '[' not in s:
                f=0
                break
            
        if '{' in s:
            if '}' not in s:
                f=0
                break
            else:
                if s.index('{')>s.index('}'):
                    f=0
                    break
                else: f=1
        if '}' in s:
            if '{' not in s:
                f=0
                break
            
    if f==1:
        print("YES",end='')
    if f==0:
        print("NO",end='')
    n-=1
    if n!=0:print()
还有什么条件没想到吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-30 16:09:40 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-30 16:17 编辑

        这个题配合字典 + 列表非常简单
d , x = {'}' : '{' , ']' : '[' , ')' : '('} , []
for _ in range(int(input())) : x . append(input())
for s in x:
    e , f = [] , True
    for x in s:
        if x in '{[(':
            e . append(x)
        else:
            if not e or d[x] != e . pop() :
                 f = False
                 break
    print('Yes') if not e and f else print('No')
        运行实况:
D:\[00.Exerciese.2022]\Python>python x.py
4
({})
{{}}
({[}])
}{
Yes
Yes
No
No

D:\[00.Exerciese.2022]\Python>
        样例 3 的判定结果显然是错的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-30 16:30:03 | 显示全部楼层
jackz007 发表于 2022-10-30 16:09
这个题配合字典 + 列表非常简单

        运行实况:

题目里规定这样是正确的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-30 16:43:15 | 显示全部楼层
姜璟 发表于 2022-10-30 16:30
题目里规定这样是正确的

         完全不可能,括号必须同类型顺序成对匹配,这样才会有意义,否则,就是乱套!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-30 17:05:11 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-30 18:28 编辑
姜璟 发表于 2022-10-30 16:30
题目里规定这样是正确的

d , x = {'}' : '{' , ']' : '[' , ')' : '('} , []
for _ in range(int(input())) : x . append(input())
for s in x:
    e , f = [] , True
    for x in s:
        if x in '{[(':
            e . append(x)
        else:
            if d[x] in e : e . remove(d[x])
            else :
                f = False
                break
    print('Yes') if not e and f else print('No')
        运行实况:
D:\[00.Exerciese.2022]\Python>python x.py
4
({})
{{}}
({[}])
}{
Yes
Yes
Yes
No

D:\[00.Exerciese.2022]\Python>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-30 18:22:38 | 显示全部楼层
本帖最后由 阿奇_o 于 2022-10-30 18:23 编辑
# 思路:典型的入栈出栈问题
# 解决:
def f():
    # n = int(input())
    # ps = [input().strip() for _ in range(n)]
    ps = "({}),{{}},({[}]),}{,{(})[{(}])".split(',')   # 方便测试,直接写测试用例
    for p in ps:
        cnt, ls = 0, []   # ls为"栈",cnt保存"对数"
        for i in p:
            # 入栈
            if i in '{([': ls.append(i) 
            # 出栈 
            if i == '}' and '{' in ls: ls.remove('{'); cnt += 1
            if i == ')' and '(' in ls: ls.remove('('); cnt += 1
            if i == ']' and '[' in ls: ls.remove('['); cnt += 1

        # print(p, f'\t--> Yes 共{cnt}对' if len(ls)==0 else '\t--> No', )      # 是否有效判断 方法一
        print(p, f'\t--> Yes 共{cnt}对' if cnt==len(p)/2 else '\t--> No', )     # 方法二
        # 注:如果只用方法二判断,实际上可以不进行出栈操作,即ls.remove()可省去,只用cnt统计好即可
f()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-31 01:57:04 | 显示全部楼层
原本以为你这个题目考的是栈结构,仔细一看 考的是贪心 (如果需要输出多少对而不是YesNo)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-25 21:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表