Góp ý cách rút gọn bài toán

Chào mn giúp em sửa lỗi code ra sai kq :frowning: chắc em làm nghĩ sai về thuật toán r.

#include <bits/stdc++.h>
#define MAX 100
using namespace std;
void xulyDuLieu (int a[],int n, int b[], int &m)
{
    b[m]=a[0];
    m++;
    for (int i=1;i<n;i++)
    {
        bool flag = true;
        for (int j=i-1;j>=0;j--)
        {
            if (a[i]==a[j])
            {
                flag = false;
                break;
            }
        }
        if (flag==true)
        {
            b[m]=a[i];
            m++;
        }
    }

}
void xulyBT (int a[],int n, int b[], int &m)
{
    int c[MAX], z=0;

    xulyDuLieu(a,n,b,m);
    for (int i=0;i<m;i++)
    {
        int dem=0;
        for (int j=0;j<n;j++)
        { 
             if (a[i]==a[j])
           dem++;
        }
        c[z]=dem;
        z++;
    }
    ofstream FileOut ("bai1.out");
    int max = c[0];
    for (int i=1;i<z;i++)
    {
       if (c[i]> max)
       {
           max = c[i];
       }

    }
    FileOut << max;
}
int main()
{
    int a[MAX], b[MAX], n, m=0;
    ifstream FileIn;
    FileIn.open("bai1.inp");
    FileIn >> n;
    for (int i=0;i<n;i++)
    {
        FileIn >> a[i];
    }
   
    xulyBT(a,n,b,m);
    FileIn.close();
    return 0;
}

Chỉ 2 vòng lặp lồng nhau và 2 biến đếm và lưu là xong. Không cần mảng phụ, không cần “xử lý mảng”. :smiling_imp:

Mà có ai có cách dùng 1 vòng lặp không nhỉ? :thinking:

4 Likes

Khai báo 1 mảng kiểu int gồm 10001 phần tử init 0, mỗi số x quay được thì phần tử có index là x đó tăng 1, sẵn tiện so với với biến max luôn
Hết input là in luôn kết quả, còn lặp gì tầm này nữa

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?