原题链接:蓝桥杯算法提高VIP-判断名次
解题思路:
注意事项:
题意是“排名为奇数的人说了假话”,所以多做一个字典方便找出我们判断的那个排列里面的某人的排名,找到这个人的排名再去判断他说的话是真是假。
参考代码:
from itertools import permutations a = [input() for _ in range(5)] a = list(map(lambda x: f"{x[0]}=={x[-1]}" if x[1] == '=' else x, a)) players, res = permutations("ABCDE"), 0 order = dict(zip([i for i in range(5)], "ABCDE")) for current_result in players: temp = [f"not {str(current_result.index(a[i][0]) + 1)}{a[i][1:]}" if (current_result.index(order[i]) + 1) & 1 else f"{str(current_result.index(a[i][0]) + 1)}{a[i][1:]}" for i in range(5)] if sum(int(eval(j)) for j in temp) == 5: res += 1 print(*current_result, sep='') print(res)
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复