fork download
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. int n, k, b[1000], ok;
  5.  
  6. void khoitao() {
  7. for (int i = 1; i <= k; i++) b[i] = n - k + i; // Bắt đầu từ tổ hợp cuối cùng (3 4 5)
  8. }
  9.  
  10. void lietke() {
  11. int i = k;
  12. while (i > 0 && b[i] == i) i--; // Tìm phần tử cần giảm
  13.  
  14. if (i == 0) {
  15. ok = 0; // Nếu không thể giảm thêm, dừng lại
  16. } else {
  17. b[i]--; // Giảm giá trị phần tử tại vị trí i
  18. for (int j = i + 1; j <= k; j++) b[j] = b[j - 1] + 1; // Cập nhật các phần tử sau
  19. }
  20. }
  21.  
  22. int main() {
  23. cin >> n >> k;
  24. ok = 1;
  25. khoitao(); // Khởi tạo tổ hợp lớn nhất
  26. while (ok) {
  27. for (int i = 1; i <= k; i++) cout << b[i] << " ";
  28. cout << endl;
  29. lietke();
  30. }
  31. }
  32.  
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout