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
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
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.
@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
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;
}
thuật toán bạn học từ đâu vậy Minh Vũ
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.
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 =))
Chuẩn rồi, với cả thảo luận cũng tốt hơn.
Kaka, bị hốt hàng, :running: thôi
đ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
Cái này thuộc về c++ rồi. Mình đang hỏi về C mà
sizeof là kích cở đó. hàm lấy kích thước
À, 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 ^^
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
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;
}
}
cố tình viết chữ MẢNG
, thấy nhiều bạn sai từ này quá
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
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?
Kết quả thế này ạ.
. em tìm mãi không ra thuật toán sai chổ nào.