30/09/2018, 16:15

Tìm giá trị xuất hiện nhiều nhất và số lần xuất hiện trong MẢNG 1 chiều?

Mình có bài tập như sau:

Tìm giá trị xuất hiện nhiều nhất và số lần xuất hiện trong mãng 1 chiều

Sáng Béo viết 18:30 ngày 30/09/2018

Dự là a Đạt sẽ vào cmt bla bla rồi dẫn link Hỏi Bài Tập có giúp ta học tốt hơn bla bla.

Thực tế khắc nghiệt viết 18:21 ngày 30/09/2018

@Kelvin_Nguy_n đáng lẽ ra bạn phải hỏi thế này :
1 là bạn đăng bài hỏi mọi người cách giải
2 là bạn sẽ trình bày cách bạn giải . t rong khi giải bạn bí ở mục nào thì bạn post code lên để mọi người giúp.
Đặt 1 câu hỏi khôn sẽ giúp ta học hỏi rất nhiều đó thử sửa lại đi
tiện thể mình hướng dẫn bạn luôn nhé . cách giải của mình như sau :

nhập mảng
xuất mảng
tạo 1 hàm đếm số lần của 1 giá trị bất kỳ có trong mảng
duyệt lại mảng và lấy giá trị max từ hàm đếm số lần ở trên
hàm main để gọi hàm và trả kết quả nhé bạn

bạn làm đi bí ở đâu mình sẽ tư vấn

viết 18:23 ngày 30/09/2018

Post code luôn để anh @ltd khỏi quảng cáo clip

#include <iostream>
#include <algorithm>
using namespace std;
 
int main() {
 
	int a[] = { 5,5,5,5,5,4,4,4,4,3,3,3,2,2,1 };
	int n = sizeof(a)/sizeof(a[0]);
 
	sort(a,a+n);
 
	int i = 0, max = 0,index = 0;
	int frequency;
	while(i < n)	{
 
		frequency = 1;
 
		while(a[i] == a[i+1])	{
 
			frequency++;
			i++;
		}
 
		if(max < frequency)	{
 
			max = frequency;
			index = i;
		}
 
		i++;
	}
 
	cout << "Maximum frequency: " << max << endl;
	cout << "Element has maximum frequency factor: " << a[index] << endl;
 
	return 0;
}
Thực tế khắc nghiệt viết 18:17 ngày 30/09/2018

code

thuật toán bạn học từ đâu vậy Minh Vũ

viết 18:23 ngày 30/09/2018

Thuật toán bài này thì cũng đơn giản mà, muốn đếm tần số xuất hiện thì cứ sắp xếp cho nó gom lại từng đống rồi đếm thôi, nhát thì cứ 2 vòng for cho lẹ . Còn môn CTDL + giải thuật thì em học nhiều chổ lắm nhưng chưa đủ Sách Lê Minh Hoàng 1 ít, rồi trên trang geeksforseeks, … Học theo từng chủ đề thôi, hiện thì đang tìm hiểu về từng bài toán có thể dùng quy hoạch động.

Nguyễn Minh Dũng viết 18:27 ngày 30/09/2018

Dự là a Đạt sẽ vào cmt bla bla rồi dẫn link Hỏi Bài Tập có giúp ta học tốt hơn bla bla.

Bài này dễ thì thấy các bạn lao vào làm. Chứ gặp bài khó hoặc bài nào chán và dài mà hỏi thế này thế này thì lăn quay hết =))

1 là bạn đăng bài hỏi mọi người cách giải2 là bạn sẽ trình bày cách bạn giải . t rong khi giải bạn bí ở mục nào thì bạn post code lên để mọi người giúp. Đặt 1 câu hỏi khôn sẽ giúp ta học hỏi rất nhiều đó thử sửa lại đi

Chuẩn rồi, với cả thảo luận cũng tốt hơn.

Post code luôn để anh @ltd khỏi quảng cáo clip

Kaka, bị hốt hàng, :running: thôi

Thực tế khắc nghiệt viết 18:29 ngày 30/09/2018

Kaka, bị hốt hàng

đang tính là quẩy từng chút thì bạn Minh Vũ post thẳng cái code. ọc máu luôn anh Đạt

Kelvin Nguyễn viết 18:23 ngày 30/09/2018

Cái này thuộc về c++ rồi. Mình đang hỏi về C mà

X viết 18:22 ngày 30/09/2018

C++ chuyển qua C có gì khó đâu bạn @Kelvin_Nguy_n
thêm stdio.h rồi cout ~ printf thôi mà

Kelvin Nguyễn viết 18:24 ngày 30/09/2018

int n = sizeof(a)/sizeof(a[0]);

sort(a,a+n);

Chổ này là sao, Chả hiểu gì?

Thực tế khắc nghiệt viết 18:22 ngày 30/09/2018

sizeof là kích cở đó. hàm lấy kích thước

Nguyễn Minh Dũng viết 18:31 ngày 30/09/2018

À, chỗ này @minh_vu_03 lười và sử dụng giải thuật std::sort để sắp xếp cho lẹ. Cái này là C++. Không thể chối cãi được ^^

Programmer Riot viết 18:31 ngày 30/09/2018

bài này dùng c++ mới giải được àh, dùng C hok đc sao, hèn gì mình ngồi cả buổi mà vẫn hok suy nghĩ ra thuật toán đc

viết 18:26 ngày 30/09/2018

Có thể làm theo cách này sau khi sort

for (int i = 0; i < LENGTH; ++i)
{
	++currentFrequency;
	if( i == LENGTH -1 || datas[i] != datas[i+1])
	{
		if( currentFrequency > highestFrequency)
		{
			highestFrequency = currentFrequency;
			mostFrequent = datas[i];
		}
		
		currentFrequency = 0;
	}
}
Phạm Hoàng Tuấn viết 18:31 ngày 30/09/2018

cố tình viết chữ MẢNG, thấy nhiều bạn sai từ này quá

X viết 18:27 ngày 30/09/2018

Hôm nay ta đã trở lại =)) bài này thì đếm từng phần tử rồi cho mấy thằng đếm vào 1 mảng mới. tìm max mảng mới thôi là được :v

Thuc Coder viết 18:21 ngày 30/09/2018
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TTPT
{
    class Program
    {
        static void nhapmang(int[] a, int n)
        {
            for (int i = 0; i < n; i++)
            {
                Console.Write("a[" + i + "]=");
                a[i] = int.Parse(Console.ReadLine());
            }
        }
        static void xuatmang(int[] a, int n)
        {
            Console.Write("Hien thi mang:");
            for (int i = 0; i < n; i++)
                Console.Write(a[i]+ " ");
        }
        int kiemtra(int [] a,int n,int i) 
        { 
            int t=a[i]; 
            for (int j=0;j<i;j++) 
                if (t==a[j])return 0; 
            return 1; 
        }
        int demmang (int []a,int n,int i) 
        { 
            int t=a[i],j=0; 
            for (i=0;i<n;i++) 
            { 
                if (t==a[i]) j++; 
            } 
            return (j); 
        } 
        static void Main(string[] args)
        {
            Program newdemmang = new Program();
            Console.Write("Nhap so phan tu cua mang: ");
            int n = int.Parse(Console.ReadLine());
            int[] a = new int[20];
            nhapmang(a, n);
            xuatmang(a, n);
             
            int x = newdemmang.demmang(a, n, 0);
            newdemmang.kiemtra(a, n, 0);
            for (int i = 0; i < n; i++)
            {
                    Console.WriteLine("a["+ i+ "]"+ ":" + "demmang(a,n,i)" + "phan tu");
            }
            Console.ReadKey();
        }
    }
}

Trong c# em làm code như trên để tìm xem số lần xuất hiện của mỗi phần tử trong mảng. mà nó chỉ cho nhập mảng và hiển thị mảng, còn đếm số lần xuất hiện vẫn chưa được. anh/chị kiểm tra xem thuật toán trong hàm int demmang (int []a,int n,int i) int kiemtra(int [] a,int n,int i) sai ở đâu?

Thuc Coder viết 18:27 ngày 30/09/2018

Kết quả thế này ạ.
. em tìm mãi không ra thuật toán sai chổ nào.

Bài liên quan
0