试题编号: | 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])))