Trại Hè MT&TN Lớp A5

Công khai 232 thành viên
• 7:04 a.m. 27 Tháng 6, 2022

Bài tập ngày 27/6

Các em tham gia làm bài trong contest Lớp A5 - Thầy Đông 27/6

Sau 9h30 thầy Đông sẽ lên lớp để sửa bài nhé.

...Xem thêm
• 11:02 a.m. 24 Tháng 6, 2022

Bài toán con của "Bài Tập 2021"

• 9:53 a.m. 24 Tháng 6, 2022

Cập nhật thông tin

Các em xem và bổ sung thông tin sau:

...Xem thêm
• 9:09 a.m. 24 Tháng 6, 2022

Duyệt tập con

  1. Cách đệ quy:
C++
#include<bits/stdc++.h>
using namespace std;

vector<int> v;
int n;

void dequy(int i) {
    if (i == n + 1) {
        // tinh toan
        for (int i: v) {
            cout << i << " ";
        }
        cout << endl;
        return;
    }

    v.push_back(i);
    dequy(i + 1);
    v.pop_back();
    dequy(i + 1);
}

int main() {
    // freopen("input.txt","r",stdin);
    ios::sync_with_stdio(0);
    cin.tie(NULL);

    n = 4;
    dequy(1);

    return 0;
}
  1. Cách bitmask
C++
#include<bits/stdc++.h>
using namespace std;

bool onBit(int bit, int i) {
    int x = bit & (1 << i);
    if (x == 0) return false; // bit thu i tat
    return true;
}

int main() {
    // freopen("input.txt","r",stdin);
    ios::sync_with_stdio(0);
    cin.tie(NULL);

    int n = 4;
    for (int bit = 0; bit < (1 << n); bit++) {
        vector<int> v;
        for (int i = 0; i < n; i++) {
            if (onBit(bit, i)) {
                v.push_back(i);
            }
        }

        // tinh toan
        for (int i: v) {
            cout << i << " ";
        }
        cout << endl;
    }

    return 0;
}
...Xem thêm