c++ - 洗牌?

标签 c++ algorithm shuffle playing-cards

非常是 C++ 的新手,我还没有完全理解基本概念,但我的教授希望我们编写一个算法来洗牌和展示一副纸牌和一副牌需要表示为二维数组。

但是我在模拟一副纸牌时遇到了麻烦!

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<char> deck;
    char suit[] = {'h','d','c','s'};
    char card[] = {'2','3','4','5','6','7','8','9','T','J','Q','K','A'};
    for (int j=0; j<13; j++) {
        for (int i=0; i<4; i++) {
            deck.push_back(card[j] suit[i]);
        }       
    }

    return 0;
}

我看过很多带类(class)的卡片类(class),但我什至不确定我们是否会在本学期学习这些类(class)。

最佳答案

使用一个简单的结构,您可以像这样编辑您的代码:

#include <iostream>
#include <vector>

using namespace std;

struct Card {
  char suit, number;
  Card(char aSuit, char aNumber) : suit(aSuit), number(aNumber) { }
};

int main() {
    vector<Card> deck;
    char suit[] = {'h','d','c','s'};
    char num[] = {'2','3','4','5','6','7','8','9','T','J','Q','K','A'};
    for (int j=0; j<13; j++) {   
        for (int i=0; i<4; i++) {
            deck.push_back(Card(suit[i], num[j]);
        }
    }

    // now, deck[0] to deck[51] hold all the cards
    // first card's suit is deck[0].suit, number is deck[0].number

    return 0;
}

关于c++ - 洗牌?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13239319/

相关文章:

c++ - 如何到达 2d std::vector (`std::vector< std::vector<T>>` ) 的第 N 个元素?

c++ - 查找列表项的组合

c# - 洗牌列表<T>

php - 如何在php中实现特殊的shuffle功能

python - 在 Python 字典中随机随机排列键和值

c++ - 从临时变量返回的引用是否有效?

c++ - 如何避免从文件中读取错误的 '\n'?

algorithm - 银行交易是如何工作的 "under the hood"- 可能很详细

c++ - Keprekar 数字

NQUEENS问题的C++递归解决方案无法正常工作