30/09/2018, 20:52

hướng dẫn code này chạy như thế nào ạ

tôi có 1 đoạn code về in ra các phần tử xuất hiện nhiều nhất nhưng không biết cách chạy như thế nào
bạn nào có thể chạy bằng tay cho mình được không ạ, mình cám ơn nhiều
Nhất là cái mảng b[a[i]] là như thế nào mình hình dung không được!!

void pttrung(int a[],int b[],int n){
		int max=0;
	for(int i=0;i<n;i++)
		b[a[i]]++;
	for(int i=0;i<n;i++)
		if(b[a[i]]>max) max=b[a[i]];
	for(int i=0;i<n;i++)
		if(b[i]==max)
			cout<<i;
}
Người bí ẩn viết 23:02 ngày 30/09/2018

Bạn có đoạn code nhưng không biết nó chạy thế nào? => Copy của người khác hoặc tìm trên mạng
Vậy bạn đã học mảng chưa, các kỹ thuật mảng như Nhập, xuất, tách, gộp, sắp xếp, cập nhật, …?

tuong lam viết 22:57 ngày 30/09/2018

cái đó mình biết rồi mình chỉ thắc mắc là b[a[i]]++ nó sẽ chạy như thế nào thôi

tuong lam viết 23:02 ngày 30/09/2018

vậy nếu như thằng mảng a có phần tử là 2 thì mảng b sẽ tăng 2 lên 1 đơn vị là 3 hả bạn

Người bí ẩn viết 23:06 ngày 30/09/2018

Hehe, mình cũng không rõ lắm vì cái này mình có gặp lâu rồi và cũng quên
@TheSky @conan4582 vào giúp kìa

tuong lam viết 22:56 ngày 30/09/2018

có ai không trợ giúp tí đi nào

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

b[a[i]]++
Tăng các phần tử mảng b[] có index là giá trị các phần tử trong mảng a[] lên 1.
Vd: a[3]={2,5,8}
b[2]++
b[5]++
b[8]++

tuong lam viết 23:06 ngày 30/09/2018

còn b[a[i]] có phải lả lấy giá trị của a[i] vào b phải không bạn

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

Lấy a[i] làm chỉ mục cho b[]
j=a[i]
b[a[i]] = b[j]

tuong lam viết 23:00 ngày 30/09/2018

for(int i=0;i<n;i++)
if(b[i]==max)
cout<<i;
rồi còn cái này bạn b[i] cái i này là i của thằng a hay thằng b z bạn và xuất cái i ra là cái i của ai vạy bạn

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

i của b
For 1 : tăng các b[j] lên 1, j ở đây là các a[i]
For 2 : tìm max trong đám b[j] ở trên
For 3: tìm trong toàn bộ mảng b xem có thằng nào = max ko. Thằng nào bằng max thì in vị trí của nó trong mảng

tuong lam viết 22:57 ngày 30/09/2018

nếu mình cho ví dụ cụ thể thế này vi dụ n=4
2
3
2
1
thì sẽ in ra là j hả bạn
số 3 hay là số 2 đây

Ngô Doãn Tuấn viết 22:58 ngày 30/09/2018

Bạn lấy giấy vạch ra 2 mảng rồi thực hiện lần lượt trên giấy là ra.

tuong lam viết 22:59 ngày 30/09/2018

thằng for 2 mình chưa hiểu bạn giải thích giùm mình đi tks bạn nhiều

Ngô Doãn Tuấn viết 23:08 ngày 30/09/2018

For 2 + mảng b là nơi để lưu số lần xuất hiện của phần tử đó trong mảng trước.
Với giá trị của phần tử ở mảng a tương đương với chỉ số ở mảng b.
sau khi đó chỉ cần kiểm tra mảng b tìm xem phần tử nào có giá trị lớn nhất rồi in giá trị đó +
chỉ số là ra phần số lần xuất hiện + giá trị của mảng a

tuong lam viết 22:54 ngày 30/09/2018

ví dụ chạy bằng tay mình xem được không khó hình dung quá

Ngô Doãn Tuấn viết 22:56 ngày 30/09/2018

Việc khó của bạn mà mình làm thì nó vẫn là của mình thôi mà.
Hãy tự đặt bút mà làm đi chứ nhỉ

tuong lam viết 22:59 ngày 30/09/2018

ờ mình đang làm nhưng không hiểu cái mảng b nó như thế nào

Trương Quang Hiếu viết 23:08 ngày 30/09/2018

Ví dụ n = 4
mảng a = {1,2,3,1}
mảng b gồm giá trị từ 1 -> n. Đặt hết = 0. Tức là b[1] = 0, b[2] = 0 …v.v
Vòng for thứ nhất: Đếm số lần xuất hiện của từng giá trị trong mảng a:
i = 0 -> a[i] = 1 -> b[ a[0] ] = b[1] = 0+1 = 1;
i = 1 -> a[i] = 2 -> b[ a[1] ] = b[2] = 0+1 = 1;
i = 2 -> a[i] = 3 -> b[ a[2] ] = b[3] = 0+1 = 1;
i = 3 -> a[i] = 1 -> b[ a[3] ] = b[1] = 1+1 = 2;
Vòng for thứ hai: Tìm xem giá trị nào xuất hiện nhiều nhất.
max = 0;
i = 0 -> a[i] = 1 -> b[ a[0] ] = b[1] = 2. Mà 2 > max => max = 2;
i = 1 -> a[i] = 2 -> b[ a[1] ] = b[2] = 1 Mà 1 < max => bỏ qua
i = 2 -> a[i] = 3 -> b[ a[2] ] = b[3] = 1 Mà 1 < max => bỏ qua
i = 3 -> a[i] = 1 -> b[ a[3] ] = b[1] = 2 Mà 2 == max => bỏ qua
Vòng for thứ ba: In ra số mà xuất hiện nhiều nhất
i = 0 -> b[0] = 0 -> 0 < max => bỏ qua
i = 1 -> b[1] = 2 -> 2 == max => in ra số 1
i = 2 -> b[2] = 1 -> 1 < max => bỏ qua
i = 3 -> b[3] = 1 -> 1 < max => bỏ qua

Lời khuyên cho bạn là ra cửa hàng mua quyển vở và cái bút về nháp nhé.

tuong lam viết 23:02 ngày 30/09/2018

hiểu rồi cám ơn bạn nhiều nha mình đã hiểu cách đếm rồi tks bạn nhiều

Bài liên quan
0