C++判断五张牌是否为顺子(大小王可变牌)

本文提供了一段C++代码,用于判断给定的五张牌是否构成顺子,其中大小王可以被视为任意牌。

**代码:**cpp#include #include #include using namespace std;

bool isStraight(vector& nums) { sort(nums.begin(), nums.end()); // 对牌进行排序 int zeroCount = 0; // 记录0的个数 int gapCount = 0; // 记录空缺的个数 for (int i = 0; i < 4; i++) { if (nums[i] == 0) { zeroCount++; // 统计0的个数 } else if (nums[i] == nums[i + 1]) { return false; // 如果有重复的牌,则不是顺子 } else { gapCount += nums[i + 1] - nums[i] - 1; // 统计空缺的个数 } } return zeroCount >= gapCount; // 0的个数大于等于空缺的个数则为顺子}

int main() { vector nums; int num; for (int i = 0; i < 5; i++) { cin >> num; nums.push_back(num); } if (isStraight(nums)) { cout << 'true' << endl; } else { cout << 'false' << endl; } return 0;}

代码解释:

  1. isStraight 函数: - 首先对输入的牌进行排序。 - 使用 zeroCount 记录大小王的数量(用0表示)。 - 使用 gapCount 记录牌之间的空缺数量。 - 遍历排序后的牌,统计 zeroCountgapCount。 - 如果 zeroCount 大于等于 gapCount,则说明大小王可以填补所有空缺,构成顺子,返回 true;否则返回 false

  2. main 函数: - 读取用户输入的五张牌。 - 调用 isStraight 函数判断是否为顺子。 - 输出判断结果。

例子:

输入: 0 1 3 4 0

输出: true

总结:

这段代码简洁高效地解决了判断五张牌是否为顺子的问题,并考虑了大小王可以替代任意牌的情况,逻辑清晰易懂。

C++判断五张牌是否为顺子(大小王可变牌)

原文地址: https://www.cveoy.top/t/topic/SOG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录