01/10/2018, 09:18

Chia mảng thành nhiều phần bằng nhau

Mảng ban đầu có M phần tử, chia mảng thành K phần bằng nhau, mổi phần có D = M / K (phần cuối có thể lớn hơn D phần tử nếu phép chia dư). phần 1 chứa các phần tử có chỉ số từ 0 đến ( D − 1), phần 2 chứa
các mẫu số liệu có chỉ số từ D đến ( 2D − 1), v.v. Ngăn cuối cùng chứa tất cả các mẫu
còn lại sau khi đã đưa các mẫu vào K − 1 ngăn trước đó.
VD: M = 1000, K = 3
p1: 0-332
p2: 333 - 665
p3: 666 - 999
Ai cho em xin ý tưởng (nếu có code demo càng tốt)

Trần Hoàn viết 11:26 ngày 01/10/2018

Bạn sử dụng cấu trúc “mảng chứa mảng” nhé

Thanh viết 11:25 ngày 01/10/2018

bạn nói rõ tý hơn giúp mình nhé

Trần Hoàn viết 11:24 ngày 01/10/2018
int** Mang2Chieu = new int*[K]; // Khai báo một "con trỏ cấp 2" dưới dạng một "mảng con trỏ cấp 1" có K phần tử
Mang2Chieu[0] = new int[D]; // Khai báo phần tử đầu tiên của Mang2Chieu (phần tử này là một con trỏ vì Mang2Chieu là "mảng con trỏ cấp 1") dưới dạng một mảng số nguyên có D phần tử
Mang2Chieu[1] = new int[D];
... //Đây là minh hoạ thuật toán, để chạy từ [0] đến [K-2] bạn có thể khai báo bằng vòng for chẳng hạn
Mang2Chieu[K-2] = new int[D];
Mang2Chieu[K-1] = new int[gì gì đó]; //Cái này là do bạn bảo phần cuối có thể lớn hơn D nếu dư

Như vậy mảng gồm các phần tử thuộc p2 sẽ là Mang2Chieu[1] và phần tử thứ 3 của p2 sẽ là Mang2Chieu[1][2]

Bài liên quan
0