编程思维:东东的扑克牌大战与排序算法

0 下载量 127 浏览量 更新于2024-08-31 收藏 65KB PDF 举报
本周的程序设计思维与实践作业B关注于东东和他的朋友们玩的一种简化版扑克牌游戏。在这个游戏中,所有的比较基于数字大小,而不考虑花色,每张牌都有一个数值代表,A对应1,J、Q、K分别代表11、12、13。玩家每人抽取五张牌组成一手牌,牌型包括大牌(总和最大)、对子、两对、三个、三带二、炸弹(四张相同)和顺子(连续五个数字)以及特殊的龙顺子(10-J-Q-K-A)。牌型之间的比较规则如下: 1. 大牌:若两边牌型都不是特定类型,则直接比较五张牌的总和。 2. 对子:比较两张值相等的牌,然后对比剩余三张牌的总和。 3. 两对:首先比较较大对子的大小,如相等则比较较小对子,再比较剩下的单张牌。 4. 三个:比较三个值相同的牌,如相等则对比剩余两张牌。 5. 三带二:同样先看“三个”的大小,再看“对子”,如果都一样,最后比较单张牌。 6. 炸弹:四个相同的牌比较,如相等则比剩下的那张牌。 7. 顺子:直接比较顺子中的最大值。 8. 龙顺子:这是一种特殊的顺子,固定顺序10-J-Q-K-A。 东东作为魔法师,需要根据这些规则来创建一个排行榜,将所有玩家的牌按照大小排序,如果牌型相同,则依据人名字典序决定排名。然而,在排行榜生成过程中,宇宙射线的干扰让东东面临挑战,他需要编写程序来处理这个复杂的牌型比较和排序任务。 这个作业涉及的知识点包括: - 算法设计:理解并实现各种牌型的比较逻辑,这需要设计一种高效的算法来处理多类型的牌型判断和排序。 - 数据结构:可能用到数组或列表来存储每张牌的数值,以及数据结构来辅助比较和排序。 - 控制流程:如何在代码中嵌套条件判断以确定牌型并执行相应的比较。 - 排序算法:选择合适的排序算法(如冒泡排序、快速排序、归并排序等),以满足在相同牌型下的人名字典序排序需求。 - 编程语言基础:运用选定的编程语言(如Python、Java或C++)来实现以上逻辑。 完成这个作业不仅能够提升编程技能,还能锻炼逻辑思维、抽象能力和问题解决能力,是程序设计思维应用的一个实际场景。