Xóa các phần tử trùng nhau trong dãy số

33
Lập trình C++

Bài toán: Xóa tất cả các phần tử trùng nhau trong dãy số. Với những số này chỉ giữ lại đại diện một số.

Ví dụ: dãy 1 1 2 3 2 4 3 7. Sau khi xử lý sẽ còn lại là: 1 2 3 4 7

Đầu vào: số lượng phần tử của một mảng và dãy số của dãy số.

Đầu ra: Dòng thứ nhất ghi số lượng phần tử còn lại, dòng thứ hai liệt kê các phần tử của dãy số sau khi xóa các số trùng nhau.

Code tham khảo: 

#include <iostream>
using namespace std;
// Xoa phan tu cua mang tai vi tri bat ky
void Xoa(int a[],int &n, int vitri) {
    for (int i = vitri + 1; i < n; i++) {
        a[i-1] = a[i];
    }
    n--;
}
// Xoa cac phan tu trung nhau
void Xoa_Trung(int a[], int &n) {
    for (int i = 0; i < n-1; i++) {
        for (int j = i+1; j < n; j++) {
            if (a[i]==a[j]) {
                Xoa(a,n,j);
                i--;
            }
        }
    }
}
int main() {
    freopen("ARRDEL.INP","r",stdin);
    freopen("ARRDEL.OUT","w",stdout);
    int n; int a[100];
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    Xoa_Trung(a,n);
    cout << n << endl;
    for (int i = 0; i < n; i++) {
        cout << a[i] << " ";
    }
}