fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. std::vector<std::vector<std::vector<int>>> sequences; // Lưu trữ các dãy kết quả
  5.  
  6. void generateSequences(int n) {
  7. sequences.resize(n + 1);
  8. sequences[0] = {{}}; // Dãy rỗng
  9.  
  10. for (int i = 1; i <= n; ++i) {
  11. for (int j = 1; j <= i; ++j) {
  12. for (auto &seq : sequences[i - j]) {
  13. seq.push_back(j);
  14. sequences[i].push_back(seq);
  15. }
  16. }
  17. }
  18. }
  19.  
  20. int countWays(int n) {
  21. std::vector<int> dp(n + 1, 0);
  22. dp[0] = 1;
  23.  
  24. for (int i = 1; i <= n; ++i) {
  25. for (int j = 1; j <= i; ++j) {
  26. dp[i] += dp[i - j];
  27. }
  28. }
  29.  
  30. return dp[n];
  31. }
  32.  
  33. int main() {
  34. int n;
  35. std::cout << "Nhap so nguyen duong n: ";
  36. std::cin >> n;
  37.  
  38. int result = countWays(n);
  39. std::cout << "So cach chon ra mot day co tong cac phan tu bang " << n << " la: " << result << std::endl;
  40.  
  41. generateSequences(n);
  42.  
  43. std::cout << "Cac day so ket qua:" << std::endl;
  44. for (auto &seq : sequences[n]) {
  45. for (int num : seq) {
  46. std::cout << num << " ";
  47. }
  48. std::cout << std::endl;
  49. }
  50.  
  51. return 0;
  52. }
  53.  
Success #stdin #stdout 0.01s 5276KB
stdin
6
stdout
Nhap so nguyen duong n: So cach chon ra mot day co tong cac phan tu bang 6 la: 32
Cac day so ket qua:
1 1 1 1 1 1 
1 2 1 1 1 1 
1 1 2 1 1 1 
1 2 3 1 1 1 
1 1 1 2 1 1 
1 2 1 2 1 1 
1 1 2 3 1 1 
1 2 3 4 1 1 
1 1 1 1 2 1 
1 2 1 1 2 1 
1 1 2 1 2 1 
1 2 3 1 2 1 
1 1 1 2 3 1 
1 2 1 2 3 1 
1 1 2 3 4 1 
1 2 3 4 5 1 
1 1 1 1 1 2 
1 2 1 1 1 2 
1 1 2 1 1 2 
1 2 3 1 1 2 
1 1 1 2 1 2 
1 2 1 2 1 2 
1 1 2 3 1 2 
1 2 3 4 1 2 
1 1 1 1 2 3 
1 2 1 1 2 3 
1 1 2 1 2 3 
1 2 3 1 2 3 
1 1 1 2 3 4 
1 2 1 2 3 4 
1 1 2 3 4 5 
1 2 3 4 5 6