Số lượng giá trị khác nhau trong mảng

2 4 0
Số lượng giá trị khác nhau trong mảng

Đang tải... (xem toàn văn)

Thông tin tài liệu

Bài tập Cho dãy số nguyên dương {A} có n phần tử, hãy cho biết số lượng giá trị khác nhau trong dãy và giá trị có số lần lặp nhiều nhất (nếu có nhiều hơn một thì chọn giá trị nhỏ nhất) INP Dòng thứ nhất chứa n ( 5101  n ) Dòng tiếp theo là dãy {A} n phần tử cách nhau ( 1 Ai 510.

Lưu ý: Tài liệu mang tính chất tham khảo, có trường hợp chưa đắn điều chỉnh, xin cảm ơn Tài liệu tham khảo từ Tài liệu giáo khoa tin Chuyên tin 1(Dỗ Đức Đông-Lê Minh Hoàng-Nguyễn Thanh Tùng) Bài tập: Cho dãy số nguyên dương {A} có n phần tử, cho biết số lượng giá trị khác dãy giá trị có số lần lặp nhiều (nếu có nhiều chọn giá trị nhỏ nhất) .INP: -Dịng thứ chứa n (  n  10 ) -Dòng dãy {A} n phần tử cách (  A[i]  10 ) OUT: -Dòng thứ chứa số lượng giá trị khác -Dịng thứ hai chứa giá trị có số lần lặp nhiều .INP OUT 142525 15 100 14 14 100 4 99 9 Hướng dẫn tham khảo: - Dùng mảng đánh dấu {F} : +Gọi F[t] số lần lặp giá trị t, ( F[t] + 1) gặp t +Ban đầu F[t] = (giá trị t chưa gặp nên = 0) +Ta duyệt mảng {A}, mổi lần ta có giá trị A[i] ta cộng F[A[i]] thêm +Để tính số lượng(dem) giá trị khác da duyệt mảng F, F[t] khác có nghĩa có giá trị t dãy (dem ++) +Để tìm giá trị có lần lặp max ta tìm F[t]max điều kiện t Code tham khảo: Const Nmax = 100000; procedure GTMin(); var i, t, dem, res, dmax:longint; F:array[1 Nmax] of longint; begin for i:= to Nmax // Ban đầu rỗng F[i]:= 0; for i:= to n // Đánh dấu giá trị a[I] có dãy inc( F[a[i]] ); dem:= 0;// số lượng giá trị khác res:= 0;// giá trị có số lần lặp max dmax:= 0;//số lần lặp max for t:= to Nmax if F[t] then //giá trị t có dãy lặp F[t] lần begin inc(dem); if dmax < F[t] then begin slmax:= F[t]; res:= t; end; end; writeln(sl); write(res); end; - Ta xếp dãy {A}, giá trị giống đứng cạnh Khi ta cần đếm số lượng giống giá trị A[i] ta nhận số lần lặp A[i] Mỗi lần ta tăng số lượng giá trị khác so sánh để tìm giá trị có số lần lặp max Code tham khảo: procedure QuickSort(L,H:longint); var i,j :longint; x,tmp :longint; begin i:=L; j:=H; x:=a[(L+H) div 2]; repeat while a[i]x dec(j); if ij; if L

Ngày đăng: 11/07/2022, 14:45

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan