C++ 扑克牌顺子判断算法
这个问题可以通过排序和遍历的方法来解决。首先,我们需要对给定的牌进行排序,然后遍历排序后的牌数组,判断是否满足顺子的条件。
以下是 C++ 的代码示例:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool isStraight(vector<int>& nums) {
sort(nums.begin(), nums.end()); // 对牌进行排序
int zeroCount = 0; // 记录0的个数
for (int i = 0; i < 4; i++) {
if (nums[i] == 0) {
zeroCount++; // 统计0的个数
} else if (nums[i] == nums[i + 1]) {
return false; // 如果有重复的牌,则不是顺子
}
}
return nums[4] - nums[zeroCount] < 5; // 最大牌和最小牌的差值小于5则为顺子
}
int main() {
vector<int> 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;
}
在代码中,我们首先对牌进行排序,然后遍历前四张牌(最大索引为3),统计0的个数和判断是否有重复的牌。最后,我们根据最大牌和最小牌的差值与0的个数来判断是否满足顺子的条件。
在主函数中,我们读取输入的五张牌并存储在数组 nums 中,然后调用 isStraight 函数来判断是否为顺子,并输出结果。
原文地址: https://www.cveoy.top/t/topic/SOd 著作权归作者所有。请勿转载和采集!