Tìm phần tử xuất hiện nhiều nhất trong mảng

     
Mình có bài tập như sau: "Nhập vào một mảng số nguyên n trường đoản cú bàn phím, in ra màn hình thành phần có số lần lặp các nhất vào mảng vừa lập."VD: Mảng tất cả 5 phần tử 2,2,1,1,3 in ra là: bộ phận 1 với 2 lặp các nhất (2 lần). Tôi đã làm bài tập này tuy vậy với mảng như trên công tác chỉ hiện ra: bộ phận 2 lặp những nhất (2 lần). Các bạn có thể giúp mình sửa lại code để đúng vào trường đúng theo trên không? bản thân cảm ơn.


Bạn đang xem: Tìm phần tử xuất hiện nhiều nhất trong mảng

#include main(){ int i,n,j,name,dem<100>,a<100>,max; printf("Nhap vao so phan tu cua mang: "); scanf("%d",&n); for (i=0;i
*
*
trả lời cùng với trích dẫn
*

Thành viên chủ yếu thức
*

*



Xem thêm: Sniper Ghost Warrior 3 Đánh Giá Sniper Ghost Warrior 3 Trên Máy Tính Chi Tiết

Thành viên nhiệt độ tình
*

mình tất cả ý tưởng như vậy này chúng ta code theo C nhá , mình xa lạ C lắm buộc phải phải code theo C++ !thuật toán là :ban đầu cậu thu xếp lại mảng theo quick sort nhá ( cái này độ phức hợp có 0(nlogn) thôi )sau khi sắp đến xếp xong bạn cần sử dụng 1 thay đổi đếm chạy với 1 trở nên là kết quả lớn nhất và so sánh nếu như 2 phần tử khác nhau thì gán lại biến hóa đếm = 1 , không thì tạo thêm 1 cứ thế cho tới hết mảng và đối chiếu với biến hiệu quả lớn nhất cùng gán mang lại nó;sau khi giành được số lần xuất hiện nhiều tốt nhất rồi thì chúng ta duyệt lại 1 đợt tiếp nhữa để xem những phần tử nào gồm cùng cùng với số lần xuất hiện max !( vấn đề này tớ làm cho với độ phức hợp là 0(nlogn) thôi ,còn theo phong cách của cậu là 0 (n^2 ))
#include#include#includevoid nhap(int* a,int& n);void xuat(int* a,int n);void timsolanlapnhieunhat(int* a,int n);int tim(int* a,int n,int x);void swap(int& a,int& b);int main()int n;printf(" Nhap vao so phan tu cua mang: ");scanf("%d",&n);int* a=(int*)malloc(n*sizeof(int));nhap(a,n);xuat(a,n);printf(" với cac phan tu khac nhau ");timsolanlapnhieunhat(a,n);getch();return 0;void nhap(int* a,int& n){int i;for(i=0;i
Bài này biện pháp giải dễ dàng nhất là bố trí mảng.Tuy nhiên, còn nếu như không muốn sắp tới sếp thì tất cả thif dùng thủ thuật đếm dồn
, thủ thuât hơi vấn đề nhưng không độ tinh vi không mang lại nổi mập như mẹo nhỏ đếm đầy đủTheo chuyên môn đếm dồn, nếu mảng a gồm k bộ phận mang cực hiếm x thì thành phần x đầu tiên được đếm là 1, phần tử x sản phẩm hai được đếm là 2, vv... Và bộ phận x trang bị k được đếm là k.Giải thuật:- Mảng mang tất cả n phần tử- tạo nên mang dem cũng n phần tử, đầy đủ giá trị = 1- Đọc mảng mang. Cứ mỗi phần tử thì lại tìm về cuối mảng, gặp gỡ trị như là thì cùng số đếm vào bộ phận tương ứng bên trên mảng đếmNhư vậy, nếu như ta gồm mảnga = 1, 1, 3, 4, 7, 5, 1, 3, 9 Thì sau khi duyệt xong, ta sẽ sở hữu mảngd = 1, 2, 1, 1, 1, 1, 3, 2, 1 Mảng d mang lại thấy, phần tử nhiều độc nhất vô nhị là thành phần thứ 7, với 3 lần lặp lại.
Quick NavigationThắc mắc xây dựng C/C++/C++0xTopCác khoanh vùng của siteCác diễn đànCỘNG ĐỒNG C VIỆTĐỊNH HƯỚNG, ĐÀO TẠO & VIỆC LÀM NGÀNH CNTTLẬP TRÌNH VISUAL C#LẬP TRÌNH OBJECTIVE-CLẬP TRÌNH JAVALẬP TRÌNH VISUAL C++ | LẬP TRÌNH VISUAL C++.NETLẬP TRÌNH C++ | LẬP TRÌNH C | LẬP TRÌNH C++0XLẬP TRÌNH TRÊN LINUX | LINUX PROGRAMMINGDATABASE và REPORTING | CÁC HỆ QUẢN TRỊ DATABASETHÀNH VIÊN CỘNG ĐỒNG C VIỆTTHẢO LUẬN CHUNGCHUYÊN MỤC GIẢI TRÍ

Chuyên mục: Thế Giới Game