PTA-天梯赛题目的算法优化
假期闲着没事做就去pta上刷题,结果刷到一题无法完全通过,问问大家有没有好的算法?L1-020 帅到没朋友(20 分)
先放题目
当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。
输入格式:
输入第一行给出一个正整数N(<=100),是已知朋友圈的个数;随后N行,每行首先给出一个正整数K(<=1000),为朋友圈中的人数,然后列出一个朋友圈内的所有人——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(<=10000),为待查询的人数;随后一行中列出M个待查询的ID,以空格分隔。
注意:没有朋友的人可以是根本没安装“朋友圈”,也可以是只有自己一个人在朋友圈的人。虽然有个别自恋狂会自己把自己反复加进朋友圈,但题目保证所有K超过1的朋友圈里都至少有2个不同的人。
输出格式:
按输入的顺序输出那些帅到没朋友的人。ID间用1个空格分隔,行的首尾不得有多余空格。如果没有人太帅,则输出“No one is handsome”。
注意:同一个人可以被查询多次,但只输出一次。
输入样例1:
3
3 11111 22222 55555
2 33333 44444
4 55555 66666 99999 77777
8
55555 44444 10000 88888 22222 11111 23333 88888
输出样例1:
10000 88888 23333
输入样例2:
3
3 11111 22222 55555
2 33333 44444
4 55555 66666 99999 77777
4
55555 44444 22222 11111
输出样例2:
No one is handsome
这是我的解法
p_num = int(input())
mes = []
for i in range(p_num):
m = input().split(' ')
if int(m) > 1: # 朋友圈里面人数大于2的才计算进去
mes.extend(m)
mes = set(mes)
search_num = int(input())
l1 = input().split(' ')
S1 = set(l1) - mes
l2 = sorted(S1, key=l1.index)# 对列表去重后按照原来的顺序排好
length = len(l2) # 按要求输出
i = 0
if length == 0:
print('No one is handsome')
else:
while i < length-1:
print(l2, end=' ')
i += 1
print(l2)
图片是程序通过情况
说实话,题目都没看懂什么意思。。。 chongchuigu 发表于 2018-8-4 17:00
说实话,题目都没看懂什么意思。。。
就是最后把一排数字中存在于上面数字的去除掉(这个描述不太准确),然后除重,按要求输出 {:9_225:} {:9_222:} 可能不是python最优但是还是可以过的,不过pta数据也比较水嘻嘻
n = int(input())
dic = {}
for i in range(n):
m = input().split(' ')
if int(m) > 1:
for each in m:
dic = 1
n_search = int(input())
l1 = input().split(' ')
flag = 1
for each in l1:
if each not in dic and flag == 1:
print("%05d" % int(each) ,end = "")
flag = 0
elifeach not in dic:
dic = 1
print(" %05d" %int(each),end = "")
if flag:
print("No one is handsome")
{:5_100:} p_num = int(input())
mes = []
for i in range(p_num):
m = input().split(' ')
if int(m) > 1:
mes.extend(m)
d = dict.fromkeys(mes, True)
search_num = int(input())
l1 = input().split(' ')
l2 = []
for j in l1:
if not d.get(j):
l2.append(j)
d = True
length = len(l2)
i = 0
if length == 0:
print('No one is handsome')
else:
while i < length-1:
print(l2, end=' ')
i += 1
print(l2) 程序员的救赎 发表于 2018-10-2 20:34
楼主这个方法更快啊{:9_227:}又学到了 感谢楼主 Legend丶Hu 发表于 2018-10-3 11:45
楼主这个方法更快啊又学到了 感谢楼主
差不多吧,只是我的简洁一点 本帖最后由 小小小菜菜菜 于 2018-12-20 15:04 编辑
学习下 学习 学习 {:10_254:} {:10_266:} {:10_254:}
页:
[1]