乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。
PAT (Basic Level) Practice 1089 狼人杀-简单版
问题分析
- 题设给定假设狼人杀中N名玩家有2人是狼人, 有2名玩家说的不是实话, 只有一个狼人说谎。要求计算出扮演狼人的玩家。
- 题目的重点在于身份的确认和发言真假的确认。
- 因为题设固定了狼人的数量只有2个, 所以我们需要从N名玩家中假设2个玩家是狼人, 其余玩家就都认为是好人, 身份的确认就完成了。
- 发言真假确认通过题设给定的规则, 如果发言认为某人是狼人且该玩家确认是狼人, 则为真; 或者认为某人不是狼人且该玩家确实不是狼人, 则为真; 其余都为假。
- 最后只需要检查 全部谎言的数量是否为2 且 狼人说谎的数量是否为1, 则可以知道是否满足题设条件。
题目的迷惑说明
- 题目没有说清楚输出格式中要求的"最小序列解"中的"序列"到底是什么序列。
- 是代表身份的0-1序列? 比如:(0, 0, 0, …, 1, …, 0)
- 还是由各个玩家发言组成的序列? 比如: (-2, +3, -4, …, &