Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Phân phối thẻ bài cho người chơi sao cho tổng bằng nhau bằng C++

Mô tả bài toán

Mảng A n phần tử (n chẵn). n/2 người chơi, mỗi người lấy 2 thẻ. Phân phối sao cho tổng 2 thẻ mỗi người bằng nhau.

Ví dụ

A=[1,5,7,4,4,3] → Sắp xếp: (1,7),(3,5),(4,4) → chỉ số gốc: (0,2),(5,1),(3,4) → tổng 8.

Thuật toán

Tạo mảng cặp (giá trị, chỉ số). Sắp xếp theo giá trị. Ghép cặp nhỏ nhất với lớn nhất, thứ 2 nhỏ với thứ 2 lớn,... In chỉ số.

Code C++

#include <bits/stdc++.h>
using namespace std;

void solve(vector A) {
    int n = A.size();
    vector> p(n);
    for (int i = 0; i < n; i++) {
        p[i] = {A[i], i};
    }
    sort(p.begin(), p.end());
    for (int i = 0; i < n/2; i++) {
        cout << "(" << p[i].second << ", " << p[n-i-1].second << "), ";
    }
}

int main() {
    vector A = {1,5,7,4,4,3};
    solve(A);
    return 0;
}

Đầu vào / Đầu ra

Input: {1,5,7,4,4,3}

Output: (0, 2), (5, 1), (3, 4),