python实现 CCF201809-3 元素选择器

试题编号:201809-3
试题名称:元素选择器
时间限制:1.0s
内存限制:256.0MB
问题描述:




 

50分代码

##11 5
##html
##..head
##....title
##..body
##....h1
##....p #subtitle
##....div #main
##......h2
##......p #one
##......div
##........p #two
##p
###subtitle
##h3
##div p
##div div p


temp = input().split()
n, m = int(temp[0]), int(temp[1])
data = []
class node():
    def __init__(self, tag, level=None, id=None):
        self.level = level
        self.tag = tag
        self.id = id
for i in range(n):
    temp = input()
    level = temp.count('.')
    id = None
    if '#' not in temp:
        tag = temp[level:].lower()    # 标签大小不敏感
        data.append(node(tag, level))
    else:
        temp = temp[level:].split()
        tag = temp[0].lower()
        id = temp[1]
        data.append(node(tag, level, temp[1]))
result = []
for i in range(m):
    temp = input()
    if '#' in temp:   # 将标签转为全小写
        temp = temp.split()
        for j in range(len(temp)):
            if '#' not in temp[j]:
                temp[j] = temp[j].lower()
    else:
        temp = temp.lower().split()
    num = 0          # 记录出现的次数
    num_index = []   # 记录出现的下标
    level = 0        # 记录当前的级别
    index = 0        # 记录temp中第index+1个字符串
    length = len(temp)
    for j in range(n):
        while index < length:
            if (data[j].tag==temp[index] or data[j].id==temp[index]) and data[j].level >= level:
                index += 1
                level = data[j].level
            break
        if index == length:
            index = 0
            level = 0
            num += 1
            num_index.append(j+1)
    num_index.insert(0,num)  # 便于输出最后的结果
    result.append(num_index)
for i in range(m):
    print(" ".join(map(str, result[i])))
    
        

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值