LKHOANVI - Liệt kê các hoán vị

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift

Cho tập hợp ~A = {1, 2, …, n}~. Liệt kê các hoán vị của ~A~.

Input

  • Một dòng duy nhất chứa số nguyên dương ~n~

Giới hạn:

  • ~1 ≤ n ≤ 9~.

Output

  • Gồm nhiều dòng, mỗi dòng là một hoán vị của tập ~A~, các hoán vị liệt kê theo thứ tự từ điển tăng dần, mỗi số trên một dòng cách nhau bởi một dấu cách

Lưu ý:

  • Không in ra khoảng trắng thừa

Sample

Input #1
3
Output #1
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

Hint

Trong #1, tập ~A~ có ~3~ phần tử thì sẽ có ~6~ hoán vị, các hoán vị được liệt kê theo thứ tự tăng dần như trên.

Problem source: Chuyên Sơn La Online Judge


Bình luận

Please read the guidelines before commenting.



  • 1
    anhtungkaitotv  đã bình luận lúc 27, Tháng 2, 2026, 8:50

    Bài này thật ra thì nó cx chẳng cần quay lui đâu , áp dụng phương pháp sinh thì ngon luôn !


  • -1
    congtyluuthaibao1978  đã bình luận lúc 25, Tháng 11, 2025, 9:30

    include <bits/stdc++.h>

    using namespace std;

    int main() { int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) { a[i] = i + 1; } do { for (int i = 0; i < n; i++) { cout << a[i]; if (i < n - 1) cout << ' '; } cout << '\n'; } while (next_permutation(a.begin(), a.end()));

    return 0;
    

    }


  • 1
    dona10khoa_nhd  đã bình luận lúc 3, Tháng 8, 2025, 13:56

    Lời giải quay lui gợi ý:

    giống bài quay lui sinh xâu nhị phân 01 tạo hàm void ql(int x) trong đó, if(x == n) -> for(int i = 0; i < n ; i ++) cout << a[i] << " "; -> cout << endl; trong phần else(trước đó đã tạo bool check[100] và đã memset(check,true,sizeof(check)) => for(int i = 1; i <= n; i++) if(check[x]) a[x] = i; check[x] = false(dùng nhánh cận tại đây) ql(x + 1) check[x] = false(trả lại trạng thại đã nhánh cận) nhập thêm n vào và chạy ql(0) là xong good luck!


  • -1
    dona10khoa_nhd  đã bình luận lúc 3, Tháng 8, 2025, 13:50

    bài này quay lui nhánh cận, thêm cái bool check[x] là xong


  • -1
    huwngg  đã bình luận lúc 20, Tháng 4, 2025, 13:22

    bài này chịu khó if else là được hết-)))


  • 0
    longchanhetl  đã bình luận lúc 28, Tháng 12, 2024, 14:24

    c++ sử lý tốt mà rễ hiểhiểu tui ko học python nên tui hok btbt


  • -2
    nttxn24  đã bình luận lúc 17, Tháng 10, 2024, 1:03

    Python ổn hơn C++