1. Trang chủ
  2. » Công Nghệ Thông Tin

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

2 4 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 2
Dung lượng 171,94 KB

Nội dung

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Ừ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w