Trang chủ Tin Học Lớp 10 Trong lý thuyết tổ hợp, khái niệm hoán vị cũng mang một ý nghĩa truyền thống mà nay ít còn...
Câu hỏi :

Trong lý thuyết tổ hợp, khái niệm hoán vị cũng mang một ý nghĩa truyền thống mà nay ít còn được dùng, đó là mô tả một bộ có thứ tự không lặp. Khái niệm hoán vị diễn tả ý tưởng rằng những đối tượng phân biệt có thể được sắp xếp theo những thứ tự khác nhau và được định nghĩa như sau: Cho tập hợp A gồm n phần tử (n 1). Mỗi kết quả của sự sắp xếp thứ tự n phần tử của tập hợp A được gọi là một hoán vị của n phần tử đó. Ví dụ: A = {1, 2, 3} một trong những hoán vị của A là {3, 2, 1}; Trong bài tập này bạn được cho một tập A gồm n phần tử là các số nguyên từ 1 đến n. Bạn hãy liệt kê tất cả các hoán vị của tập A. Dữ liệu nhập: - Gồm một số nguyên n duy nhất (1 N 10) Kết quả: - Mỗi dòng ghi một hoán vị của tập A. Các hoán vị được liệt kê theo thứ tự từ điển. Ví dụ input 3 output 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 C++

Lời giải 1 :

#include <iostream>
using namespace std;
int n, a[10], f[10];

int Print() {
    for(int i=0; i<n; i++) cout << a[i] << ' ';
    cout << '\n';
}

void dp(int x) {
    if (x == n) { Print(); return; }
    for(int i=0; i<n; i++) if (!f[i]) {
        f[i] = 1;
        a[x] = i + 1;
        dp(x+1);
        f[i] = 0;
    }
}

int main()
{
    cin >> n;
    dp(0);
}
    

Lời giải 2 :

#include <iostream>
#include <vector>

using namespace std;

void kt(vector<int>& a,vector<bool>&h,vector<int>&l, int n) {
    if (l.size() == n) {
        for (int num : l) {
            cout << num << " ";
        }
        cout << endl;
        return;
    }
    for (int i = 0; i < n; ++i) {
        if (!h[i]) {
            h[i] = true;
            l.push_back(a[i]);
            kt(a, h, l, n);
            l.pop_back();
            h[i] = false;
        }
    }
}

int main() {
    int n;
    cin >> n;
    vector<int> a(n);
    for (int i = 0; i < n; ++i)
        a[i] = i + 1;
    vector<bool> h(n, false);
    vector<int> l;

    kt(a, h, l, n);

    return 0;
}

Bạn có biết?

Tin học là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng. Tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!

Nguồn :

Wikipedia - Bách khoa toàn thư

Tâm sự lớp 10

Lớp 10 - Năm đầu tiên ở cấp trung học phổ thông, chúng ta sẽ có nhiều bạn bè mới đến từ những nơi khác nhau. Ngôi trường mới, xa nhà hơn, mở ra một thế giới mới với nhiều điều thú vị. Hãy mở lòng đón nhận và tận hưởng những trải nghiệm mới!

Nguồn :

sưu tập

Copyright © 2024 Giai BT SGK