算法问题

时间:2018-05-04 05:18:06

标签: c++ algorithm swap

我不明白最新情况。这应该与4人交换3张卡。如果round是0,p [0]获得p [1] s卡,p [1]获得p [2] s卡,p [2]获得p [3] s卡,p [3]获得p [0]卡片。如果使用第0轮作为示例,除了p [3]获得p [1] s 3张牌而不是p [0] s 3张牌之外,所有内容都会完美交换。我设置了一个保持数组来保持p [0]的3个卡号和3个卡类型,然后交换它们,当我cout按住[0] [j]并按住[1] [j]时,它会显示它们的值应该持有。但是当我尝试为这些值分配p [3]时,它仍然会为它们分配p [1] s值。有什么想法吗?

void send3(player p[], deck &deck, int& round){
    srand(time(0));
    int give[4][3];

    cout << "Pick 3 cards to send.\n";
    p[0].handdisp(deck);
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 3; j++) {
                if (i == 0) {
                    cin >> give[i][j];
                    while (give[i][j] > 13 || give[i][j] < 1) {
                        cout << "Number not in range. \n";
                        cin >> give[i][j];
                    }
                    give[i][j] -= 1;
                }
                else {
                    give[i][j] = rand() % 13;
                    for (int k = 0; k < 3; k++) {
                        if (k != j) {
                            while (give[i][j] == give[i][k]) {
                                give[i][j] = rand() % 13;
                            }
                        }
                    }
                }
            }
        }
        int hold[2][3];
            for (int i = round; i < round+4; i++) {
                for (int j = round; j < round+3; j++) {
                    if (i==round){
                        hold[0][j]=p[i % 4].hand[give[i % 4][j % 3]];
                        hold[1][j]=p[i % 4].type[give[i % 4][j % 3]];
                        p[i % 4].hand[give[i % 4][j % 3]] = p[(i + 1) % 4].hand[give[(i + 1) % 4][j % 3]];
                        p[i % 4].type[give[i % 4][j % 3]] = p[(i + 1) % 4].type[give[(i + 1) % 4][j % 3]];
                    }
                    else if (i==round+3){
                        cout << (i+1)%4 <<hold[0][j] <<" " << hold[1][j] << endl;
                        p[i % 4].hand[give[i % 4][j % 3]] = p[(i + 1) % 4].hand[hold[0][j]];
                        p[i % 4].type[give[i % 4][j % 3]] = p[(i + 1) % 4].type[hold[1][j]];
                    }
                    else {
                        p[i % 4].hand[give[i % 4][j % 3]] = p[(i + 1) % 4].hand[give[(i + 1) % 4][j % 3]];
                        p[i % 4].type[give[i % 4][j % 3]] = p[(i + 1) % 4].type[give[(i + 1) % 4][j % 3]];
                    }
                }
            }
}

0 个答案:

没有答案