酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

描述 同学们都玩过斗地主,如果单牌一张一张出,有可能跑不掉,但是如果这些单牌连成顺子,则有可能一下子出完手中的牌,从而赢得比赛。假设我们a 2 3 4 5 6 7 8 9 10 j q k这些纸牌用1-13的数字来替代,现在输入一个n,再输入n张纸牌,判断这n张纸牌是否是一个顺子,顺子是指连续的纸牌,例如1 2 3 4 5 就是一个顺子,而2 3 6 8就不是顺子。如果只有一个数,就输出这个数。 输入描述 输入共两行: 第一行输入一个n,为纸牌的数量。 第二行为n个数,为纸牌上的数字。 输出描述 是否是顺子,是输出“yes”不是输出“no”。如果只有一个数,就输出这个数

以下是用 Python 实现的代码: ```python def is_continuous(nums): # 对输入的数字进行排序 nums.sort() # 记录 0(代表可能存在的大小王)的数量 zero_count = 0 # 遍历列表,统计 0 的数量 for num in nums: if num == 0: zero_count += 1 # 计算非 0 数字之间的间隔总和 gap_count = 0 for i in range(zero_count, len(nums) - 1): if nums[i + 1] == nums[i]: # 若有重复数字,不是顺子 return "no" gap_count += nums[i + 1] - nums[i] - 1 # 如果间隔总和小于等于 0 的数量,是顺子,否则不是 return "yes" if gap_count <= zero_count else "no" n = int(input()) nums = list(map(int, input().split())) print(is_continuous(nums)) ``` 注意点: 1. 输入的数字要确保是有效的整数。 2. 处理输入时要考虑异常情况,比如输入格式错误。 3. 代码中的排序算法时间复杂度为 O(nlogn),如果对性能要求极高,可以考虑使用更高效的排序算法。 [2024-12-22 19:08:23 | AI写代码神器 | 305点数解答]

相关提问