Dạng bài này thường yêu cầu bạn đếm hoặc liệt kê các phần tử trong mảng 2 chiều thỏa mãn tính chất cho trước như : số nguyên tố, thuận nghịch, hoàn hảo, fibonacci...
Đối với dạng bài tập này bạn chỉ cần biết duyệt mảng 2 chiều là có thể làm được.
Ví dụ 1 : Tìm phần tử nhỏ nhất, lớn nhất trong mảng 2 chiều
include "stdio.h"
include "math.h"
int main[]{
int n = 4, m = 4;
int a[4][4] = {
{3, 1, 0, 7},
{2, 5, 10, 3},
{3, 7, 4, 1},
{10, 2, 0, 3}
};
int min_val = 1000000000, max_val = -1000000000;
for[int i = 0; i < n; i++]{
for[int j = 0; j < m; j++]{
if[a[i][j] > max_val]{
max_val = a[i][j];
}
if[a[i][j] < min_val]{
min_val = a[i][j];
}
}
}
printf["Gia tri nho nhat : %d\n", min_val];
printf["Gia tri lon nhat : %d\n", max_val];
return 0;
}Output :
Gia tri nho nhat : 0 Gia tri lon nhat : 10
Ví dụ 2 : Liệt kê các số Fibonacci trong mảng 2 chiều
include "stdio.h"
include "math.h"
int fibo[long long n]{
long long F[100];
F[0] = 0; F[1] = 1;
for[int i = 2; i = res]{
res = dem; cot = i;
}
}
printf["Cot %d co nhieu so nguyen to nhat\n", cot];
printf["So luong so nguyen to o cot %d : %d\n", cot, res];
return 0;
}Output :
Cot 3 co nhieu so nguyen to nhat So luong so nguyen to o cot 3 : 3
3. Hoán Vị Hàng, Cột
Để hoán vị 2 hàng của mảng 2 chiều thì bạn duyệt qua từng cột còn để hoán vị 2 cột thì bạn lại duyệt qua từng hàng.
Ví dụ 1 : Bài toán hoán vị 2 hàng
Gia tri nho nhat : 0 Gia tri lon nhat : 10
0
Output :
Gia tri nho nhat : 0 Gia tri lon nhat : 10
1
Ví dụ 2 : Bài toán hoán vị 2 cột
Gia tri nho nhat : 0 Gia tri lon nhat : 10
2
Output :
Gia tri nho nhat : 0 Gia tri lon nhat : 10
3
4. Sắp Xếp Ma Trận Theo Hàng, Cột
Sắp xếp theo hàng
Sắp xếp theo hàng trên ma trận thì bạn có thể tự code một hàm sắp xếp mảng 1 chiều sau đó áp dụng với từng hàng của mảng 2 chiều.
Như mình có nhắc ở phần lý thuyết mảng 2 chiều thì mảng 2 chiều thực chất chính là 1 mảng các mảng 1 chiều, mỗi dòng trên mảng 2 chiều chính là 1 mảng 1 chiều.