Vấn đề
Tìm phần tử không lặp lại trong mảng bằng hai vòng lặp. Một cho phần tử hiện tại, một kiểm tra xem phần tử đã có trong mảng chưa.
Giải pháp
Ví dụ: 15, 15, 16, 15, 13, 15
Các phần tử không lặp: 16 và 13.
Thuật toán
Thuật toán tìm phần tử duy nhất/không lặp:
Bước 1 - Khai báo mảng và nhập phần tử tại runtime.
Bước 2 - Duyệt mảng, kiểm tra phần tử hiện tại đã có chưa.
Bước 3 - Nếu đã có, chuyển phần tử tiếp theo.
Bước 4 - Nếu chưa, xuất phần tử là không lặp lại.
Ví dụ
Chương trình C tìm phần tử duy nhất:
#include <stdio.h>
#include <stdlib.h>
int uniqueEle(int array[], int n){
int i, j;
int count = 1;
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
if(array[i] == array[j] && i != j)
break;
}
if(j == n ){
printf("\nPhan tu duy nhat [%d] : %d \n", count, array[i]);
++count;
}
}
return -1;
}
int main(){
int n, i;
printf("\nNhap so phan tu: ");
scanf("%d", &n);
int array[n];
printf("\nNhap cac phan tu mang: ");
for(i = 0; i < n; i++){
scanf("%d", &array[i]);
}
uniqueEle(array, n);
return 0;
}
Đầu ra
Kết quả chạy chương trình:
Lan 1: Nhap so phan tu: 5 Nhap phan tu: 11 11 15 16 13 Phan tu duy nhat [1] : 15 Phan tu duy nhat [2] : 16 Phan tu duy nhat [3] : 13 Lan 2: Nhap so phan tu: 4 Nhap phan tu: 11 12 11 11 Phan tu duy nhat [1] : 12