提示信息

华为 OD 机试 E 卷:斗地主之顺子问题(Java、Python、JavaScript、C++ 和 C)

海天一线 已关注

斗地主是中国一款非常受欢迎的纸牌游戏。在这个问题中,我们关注其中的一个牌型:顺子。顺子就是连续的几个牌组成的序列,比如 [3, 4, 5, 6, 7]。

我们要编写一个函数来判断给定的牌是否可以构成顺子。下面是如何用不同语言实现这个功能的代码示例,包括 Java、Python、JavaScript、C++ 和 C。

Java

  1. import java.util.Arrays;
  2. public class ShunziChecker {
  3. public static boolean isShunzi(int[] cards) {
  4. if (cards.length < 5) {
  5. return false;
  6. }
  7. Arrays.sort(cards);
  8. for (int i = 1; i < cards.length; i++) {
  9. if (cards[i] != cards[i - 1] + 1) {
  10. return false;
  11. }
  12. }
  13. return true;
  14. }
  15. public static void main(String[] args) {
  16. int[] cards = {3, 4, 5, 6, 7};
  17. System.out.println(isShunzi(cards)); // true
  18. }
  19. }

Python

  1. def is_shunzi(cards):
  2. if len(cards) < 5:
  3. return False
  4. cards.sort()
  5. for i in range(1, len(cards)):
  6. if cards[i] != cards[i - 1] + 1:
  7. return False
  8. return True
  9. cards = [3, 4, 5, 6, 7]
  10. print(is_shunzi(cards)) # True

JavaScript

  1. function isShunzi(cards) {
  2. if (cards.length < 5) {
  3. return false;
  4. }
  5. cards.sort((a, b) => a - b);
  6. for (let i = 1; i < cards.length; i++) {
  7. if (cards[i] !== cards[i - 1] + 1) {
  8. return false;
  9. }
  10. }
  11. return true;
  12. }
  13. const cards = [3, 4, 5, 6, 7];
  14. console.log(isShunzi(cards)); // true

C++

  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. bool isShunzi(std::vector<int> cards) {
  5. if (cards.size() < 5) {
  6. return false;
  7. }
  8. std::sort(cards.begin(), cards.end());
  9. for (size_t i = 1; i < cards.size(); ++i) {
  10. if (cards[i] != cards[i - 1] + 1) {
  11. return false;
  12. }
  13. }
  14. return true;
  15. }
  16. int main() {
  17. std::vector<int> cards = {3, 4, 5, 6, 7};
  18. std::cout << std::boolalpha << isShunzi(cards) << std::endl; // true
  19. return 0;
  20. }

C

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int compare(const void *a, const void *b) {
  4. return (*(int*)a - *(int*)b);
  5. }
  6. int isShunzi(int* cards, int size) {
  7. if (size < 5) {
  8. return 0;
  9. }
  10. qsort(cards, size, sizeof(int), compare);
  11. for (int i = 1; i < size; i++) {
  12. if (cards[i] != cards[i - 1] + 1) {
  13. return 0;
  14. }
  15. }
  16. return 1;
  17. }
  18. int main() {
  19. int cards[] = {3, 4, 5, 6, 7};
  20. int size = sizeof(cards) / sizeof(cards[0]);
  21. printf("%s\n", isShunzi(cards, size) ? "true" : "false");
  22. return 0;
  23. }

以上代码演示了怎样判断一组牌是否是顺子。要注意的是,根据题意,顺子的定义可能会变化,例如是否需要考虑大小王作为万能牌等,但这里的实现是最基础版本,仅用于演示基本逻辑。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
海天一线 关注 已关注

最近一次登录:2024-11-21 10:00:16   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图