#include <iostream>
#include <vector>
std::vector<std::vector<std::vector<int>>> sequences; // Lưu trữ các dãy kết quả
void generateSequences(int n) {
sequences.resize(n + 1);
sequences[0] = {{}}; // Dãy rỗng
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= i; ++j) {
for (auto &seq : sequences[i - j]) {
seq.push_back(j);
sequences[i].push_back(seq);
}
}
}
}
int countWays(int n) {
std::vector<int> dp(n + 1, 0);
dp[0] = 1;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= i; ++j) {
dp[i] += dp[i - j];
}
}
return dp[n];
}
int main() {
int n;
std::cout << "Nhap so nguyen duong n: ";
std::cin >> n;
int result = countWays(n);
std::cout << "So cach chon ra mot day co tong cac phan tu bang " << n << " la: " << result << std::endl;
generateSequences(n);
std::cout << "Cac day so ket qua:" << std::endl;
for (auto &seq : sequences[n]) {
for (int num : seq) {
std::cout << num << " ";
}
std::cout << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8aW50Pj4+IHNlcXVlbmNlczsgLy8gTMawdSB0cuG7ryBjw6FjIGTDo3kga+G6v3QgcXXhuqMKCnZvaWQgZ2VuZXJhdGVTZXF1ZW5jZXMoaW50IG4pIHsKICAgIHNlcXVlbmNlcy5yZXNpemUobiArIDEpOwogICAgc2VxdWVuY2VzWzBdID0ge3t9fTsgLy8gRMOjeSBy4buXbmcKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBpOyArK2opIHsKICAgICAgICAgICAgZm9yIChhdXRvICZzZXEgOiBzZXF1ZW5jZXNbaSAtIGpdKSB7CiAgICAgICAgICAgICAgICBzZXEucHVzaF9iYWNrKGopOwogICAgICAgICAgICAgICAgc2VxdWVuY2VzW2ldLnB1c2hfYmFjayhzZXEpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgppbnQgY291bnRXYXlzKGludCBuKSB7CiAgICBzdGQ6OnZlY3RvcjxpbnQ+IGRwKG4gKyAxLCAwKTsKICAgIGRwWzBdID0gMTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBpOyArK2opIHsKICAgICAgICAgICAgZHBbaV0gKz0gZHBbaSAtIGpdOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZHBbbl07Cn0KCmludCBtYWluKCkgewogICAgaW50IG47CiAgICBzdGQ6OmNvdXQgPDwgIk5oYXAgc28gbmd1eWVuIGR1b25nIG46ICI7CiAgICBzdGQ6OmNpbiA+PiBuOwoKICAgIGludCByZXN1bHQgPSBjb3VudFdheXMobik7CiAgICBzdGQ6OmNvdXQgPDwgIlNvIGNhY2ggY2hvbiByYSBtb3QgZGF5IGNvIHRvbmcgY2FjIHBoYW4gdHUgYmFuZyAiIDw8IG4gPDwgIiBsYTogIiA8PCByZXN1bHQgPDwgc3RkOjplbmRsOwoKICAgIGdlbmVyYXRlU2VxdWVuY2VzKG4pOwoKICAgIHN0ZDo6Y291dCA8PCAiQ2FjIGRheSBzbyBrZXQgcXVhOiIgPDwgc3RkOjplbmRsOwogICAgZm9yIChhdXRvICZzZXEgOiBzZXF1ZW5jZXNbbl0pIHsKICAgICAgICBmb3IgKGludCBudW0gOiBzZXEpIHsKICAgICAgICAgICAgc3RkOjpjb3V0IDw8IG51bSA8PCAiICI7CiAgICAgICAgfQogICAgICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K