01/10/2018, 00:35

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 ạ

Chu Mai Bình viết 02:46 ngày 01/10/2018

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

Tynk Huynk viết 02:44 ngày 01/10/2018

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 …

Tynk Huynk viết 02:44 ngày 01/10/2018

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

Chu Mai Bình viết 02:46 ngày 01/10/2018

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

Tynk Huynk viết 02:45 ngày 01/10/2018

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

Bài liên quan
0