问题描述:http://acm.hdu.edu.cn/showproblem.php?pid=2094
问题分析:在对决的集合中寻找那些没有输过的选手,如果有1个以上的选手没有败过,则没有冠军,如果只有一个选手则有冠军
python实现:
def inputParticipant():
'''输入信息输入含有一些选手群,
每群选手都以一个整数n(n<1000)开头,
后跟n对选手的比赛结果,
比赛结果以一对选手名字(中间隔一空格)表示,
前者战胜后者。如果n为0,则表示输入结束。
'''
participant = raw_input("please enter the format information:")
temp_list=participant.split()
temp = -1
list = []
for i in temp_list:
try:
a = int(i)
if a == 0:
break
list.append([])
temp += 1
except ValueError:
list[temp].append(i)
# print list,list.__len__()
return list
def makeChampion(list):
result=[]
for temp in list:
length=temp.__len__()/2-1
game=[[]for i in range(length)]
for i in range(length):
game[i].append(temp[i*2])
game[i].append(temp[i*2+1])
count=0
for i in range(length):
for j in range(length):
if game[i][0] <> game[j][1]:
flag = 'neverlose'
else:
flag = 'loser'
break
game[i].append(flag)
if flag == 'neverlose':
count += 1;
if count==1:
result.append('Yes')
else:
result.append('No')
return result