Mảng 1 chiều Pascal

câu 1 :Làm sao tìm số giá trị khác nhau trong một mảng
câu 2 :và làm sao biết được số lần lặp nhiều nhất
vd: 1 , 1 , 3 , 4 , 1 , 5
câu 1 sẽ là 4
câu 2 sẽ là 3
e xin thuật toán ạ

Bạn dùng vòng lặp for và 1 mảng dùng để đếm. Ban đầu các giá trị trong mảng sẽ để là 0. Khi duyệt bằng vòng lặp for, nếu bạn gặp số nào thì tăng giá trị tương ứng ở mảng đếm lên

1 Like

Câu 1: dùng thêm 1 mảng, tạm thời đặt tên là temp đi và mảng chính là arr có độ dài là N

int j = 0;
for(i = 0; i <  N; i++){
    if(temp ko chứa ar[i]){
        temp[j] = arr[i];
        j++;
    }
}

số giá trị khác nhau trong mảng arr chính là size của temp

Câu 2: still thinking … :grin:

câu 2 nếu áp dụng cách của @Binh_Mai_Chu có vẻ hợp lý đấy:

for(i = 0; i < N; i++){
     count[a[i]]++;
}

Số lần lặp nhiều nhất chính là phần tử có giá trị lớn nhất trong mảng count

Câu 1 mình nghĩ vẫn dùng mảng để đếm, sau đó dùng vòng lặp for để đếm số lượng các phần tử trong mảng có giá trị lớn hơn 0 là được

1 Like

Ý tưởng hay, 1 mảng áp dụng cho 2 câu

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?