Bài tập mảng 1 chiều c có lời giải năm 2024

Bài viết này mình sẽ hướng dẫn các bài tập liên quan tới tần suất và các giá trị khác nhau trong mảng.

NỘI DUNG

  • Đếm Các Phần Tử Khác Nhau
  • Liệt Kê Các Phần Tử Khác Nhau
  • Tần Suất Của Phần Tử Trong Mảng
  • Video Tutorial

image

1.Đếm Các Phần Tử Khác Nhau

Đếm các giá trị khác nhau trong mảng có nhiều thuật toán có thể giải quyết, trong bài này mình sẽ hướng dẫn các bạn cách giải quyết dễ tiếp cận nhất.

Trong các bài sau mình sẽ hướng dẫn thêm các phương pháp khác tối ưu hơn như sử dụng set, map, sort...

Thuật toán :

  1. Duyệt qua các phần tử trong mảng từ chỉ số 0 tới N - 1
  2. Đối với mỗi chỉ số i bạn cần xét các phần tử trong đoạn từ [0, i - 1], nếu chưa có phần tử nào trong đoạn trước chỉ số i bằng với phần tử ở chỉ số i thì ta sẽ có thêm 1 phần tử khác nhau trong mảng

Ví dụ mảng A[] = {1, 3, 4, 5, 5, 2, 4, 8, 1, 2, 3}

Xét chỉ số i = 4, khi đó A[i] = 5 và các phần tử trong đoạn trước A[i] là {1, 3, 4, 5} ta thấy A[i] bằng với 1 phần tử trong đoạn trước nó nên sẽ không đếm thêm 1 giá trị khác nhau trong mảng.

Xét chỉ số i = 5, khi đó A[i] = 2 và các phần tử đứng trước A[i] là {1, 3, 4, 5, 5,} không có phần tử nào giống với A[i] nên khi A[i] xuất hiện ta sẽ có thêm 1 giá trị khác nhau trong mảng.

Code :

include "iostream"

include "math.h"

using namespace std; int main[]{

int n = 10;  
int a[10] = {1, 3, 4, 5, 5, 2, 4, 1, 2, 3};  
int res = 0;  
for[int i = 0; i < n; i++]{  
    int check = 1;  
    for[int j = 0; j < i; j++]{  
        if[a[i] == a[j]]{  
            check = 0;  
            break;  
        }  
    }  
    if[check == 1]{  
        ++res;  
    }  
}  
cout 

Chủ Đề