这个问题可以通过排序和遍历的方法来解决。首先,我们需要对给定的牌进行排序,然后遍历排序后的牌数组,判断是否满足顺子的条件。

以下是 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 著作权归作者所有。请勿转载和采集!

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