大家好,我是big_one,一名在读大一IT生,这是我的第一篇博客,这将是我博客的开始,我将会这里发表我的每一次学习成果,记录3年的成长!
今天给大家分享一下洛谷中题目P1042,那么先上原题:
**题目背景:
国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中111111分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白111111分制和212121分制对选手的不同影响。在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。
华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在111111分制和212121分制下,双方的比赛结果(截至记录末尾)。
比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分):
WWWWWWWWWWWWWWWWWWWWWWLW
在111111分制下,此时比赛的结果是华华第一局111111比000获胜,第二局111111比000获胜,正在进行第三局,当前比分111比111。而在212121分制下,此时比赛结果是华华第一局212121比000获胜,正在进行第二局,比分222比111。如果一局比赛刚开始,则此时比分为000比000。直到分差大于或者等于222,才一局结束。
你的程序就是要对于一系列比赛信息的输入(WLWLWL形式),输出正确的结果。**
这种题目可能使用C或者java语言会难些,其实与python语言的编程思路并无区别。
那么献上我的代码。
# https://www.luogu.com.cn/problem/P1042
Hua_score = 0
Hua_opponent = 0
#定义两个函数来分别计算
def eleven(game_number):
global Hua_opponent
global Hua_score
global Win_num
global Win_num1
for i in range(len(game_number)):
if game_number[i] == 'W':
Hua_score += 1
# 记录华华获胜场数
while Hua_score == 11:
print("%d:%d"%(11,Hua_opponent))
Hua_score = 0
Hua_opponent = 0
break
elif game_number[i] == 'E':
print("%d:%d" % (Hua_score, Hua_opponent))
elif game_number[i] == 'L':
Hua_opponent += 1
while Hua_opponent == 11 :
print("%d:%d" % (Hua_score, 11))
Hua_score = 0
Hua_opponent = 0
break
Hua_score21 = 0
Hua_opponent21 = 0
def twenty_one(game_number):
global Hua_opponent21
global Hua_score21
global Win_num121
global Win_num21
for i in range(len(game_number)):
if game_number[i] == 'W':
Hua_score21 += 1
# 记录华华获胜场数
while Hua_score21 == 21:
print("%d:%d"%(21,Hua_opponent21))
Hua_score21 = 0
Hua_opponent21 = 0
break
elif game_number[i] == 'E':
print("%d:%d" % (Hua_score21, Hua_opponent21))
elif game_number[i] == 'L':
Hua_opponent21 += 1
while Hua_opponent21 == 21 :
print("%d:%d" % (Hua_score21, 21))
Hua_score21 = 0
Hua_opponent21 = 0
break
def main():
record_list = list()
record_need = list()
boolean = True
while boolean:
record = input()
record_list.append(record)
for i in range(len(record)):
if record[i] == 'E':
boolean = False
else:
boolean = True
for i in range(len(record_list)):
a = list(record_list[i])
# 将record_List中没一行的数据以列表形式存放
for j in range(len(a)):
record_need.append(a[j])
eleven(record_need)
twenty_one(record_need)
if __name__ == '__main__':
main()
这里许多细节可能我没有在看的各位大神做的好,如果有代码和学识上的错误,欢迎指出错误,谢谢!!