Tài liệu Bài giảng Các thuật toán trên mảng hai chiều: Các thuật toán trên mảng
hai chiều
Nguyễn Đông Hà
Khoa CNTT – ĐH KHTN
Sưu tầm bởi: www.daihoc.com.vn
Nội dung
Duyệt mảng 2 chiều
Tính tổng số, tích số
Đếm
Tìm kiếm
Tìm phần tử lớn nhất, nhỏ nhất
Sưu tầm bởi: www.daihoc.com.vn
Duyệt hết các phần tử của mảng
1 1 2 2 5
7 5 4 2 5
7 8 9 3 8
Mảng a[3][5]:
so_dong = 3;
so_cot = 5;
Sưu tầm bởi: www.daihoc.com.vn
Duyệt hết các phần tử của mảng
for(i = 0; i < so_dong; i++)
for(j = 0; j < so_cot; j++)
{
/* Xử lý phần tử a[i][j] */
....
}
Sưu tầm bởi: www.daihoc.com.vn
Duyệt các phần tử trên cùng dòng hoặc cột
for(j = 0; j < so_cot; j++)
{
/* Xử lý phần tử a[k][j] */
....
}
Duyệt các phần tử trên dòng có chỉ số k
Duyệt các phần tử trên cột có chỉ số k
for(i = 0; i < so_dong; i++)
{
/* Xử lý phần tử a[i][k] */
....
}
Sưu tầm bởi: www.daihoc.com.vn
Đường chéo của ma trận vuông
for(i = 0; i < n; i++)
{
/* Xử lý phần tử a[i][i] */
....
}
Đường chéo chính
...
16 trang |
Chia sẻ: honghanh66 | Lượt xem: 1073 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài giảng Các thuật toán trên mảng hai chiều, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Các thuật toán trên mảng
hai chiều
Nguyễn Đông Hà
Khoa CNTT – ĐH KHTN
Sưu tầm bởi: www.daihoc.com.vn
Nội dung
Duyệt mảng 2 chiều
Tính tổng số, tích số
Đếm
Tìm kiếm
Tìm phần tử lớn nhất, nhỏ nhất
Sưu tầm bởi: www.daihoc.com.vn
Duyệt hết các phần tử của mảng
1 1 2 2 5
7 5 4 2 5
7 8 9 3 8
Mảng a[3][5]:
so_dong = 3;
so_cot = 5;
Sưu tầm bởi: www.daihoc.com.vn
Duyệt hết các phần tử của mảng
for(i = 0; i < so_dong; i++)
for(j = 0; j < so_cot; j++)
{
/* Xử lý phần tử a[i][j] */
....
}
Sưu tầm bởi: www.daihoc.com.vn
Duyệt các phần tử trên cùng dòng hoặc cột
for(j = 0; j < so_cot; j++)
{
/* Xử lý phần tử a[k][j] */
....
}
Duyệt các phần tử trên dòng có chỉ số k
Duyệt các phần tử trên cột có chỉ số k
for(i = 0; i < so_dong; i++)
{
/* Xử lý phần tử a[i][k] */
....
}
Sưu tầm bởi: www.daihoc.com.vn
Đường chéo của ma trận vuông
for(i = 0; i < n; i++)
{
/* Xử lý phần tử a[i][i] */
....
}
Đường chéo chính
Đường chéo phụ
for(i = 0; i < n; i++)
{
/* Xử lý phần tử a[n-1-i][i] */
....
}
Sưu tầm bởi: www.daihoc.com.vn
Tính tổng các phần tử trên 1 dòng
int tong = 0;
for(j = 0; j < so_cot; j++)
{
tong = tong + a[k][j]
}
Tính tổng các phần tử trên dòng chỉ số k
Sưu tầm bởi: www.daihoc.com.vn
Tính tổng các số chẵn trên đường chéo chính
int Cheo1Chan (int a[5][5])
{
int tong = 0;
for(i = 0; i < 5; i++)
{
if(a[i][i]%2 == 0)
tong = tong + a[i][i];
}
return tong;
}
Tính tổng các số chẵn trên đường chéo chính
Sưu tầm bởi: www.daihoc.com.vn
Tính tích các số lẻ trên đường chéo phụ
int Cheo2Phu (int a[5][5])
{
int tong = 0;
for(i = 0; i < 5; i++)
{
if(a[i][i]%2 == 1)
tong = tong + a[5-1-i][i];
}
return tong;
}
Tính tổng các số lẻ trên đường chéo phụ
Sưu tầm bởi: www.daihoc.com.vn
Tính tích các số lẻ trên đường chéo phụ
int Cheo2Phu (int a[5][5])
{
int tong = 0;
int i,j;
for(i = 0; i < 5; i++)
{
if(a[i][i]%2 == 1)
tong = tong + a[5-1-i][i];
}
return tong;
}
Tính tổng các số lẻ trên đường chéo phụ
Sưu tầm bởi: www.daihoc.com.vn
Đếm các số dương trong phần tam giác phía trên
đường chéo chính
int TamGiacTrenDuong (int a[5][5])
{
int dem = 0;
int i,j;
for(i = 0; i < 5; i++)
for(j = 0; j < 5; j++)
{
if(i 0)
dem++;
}
return dem;
}
Sử dụng 1 biến đếm để ghi nhận số phần tử thỏa điều kiện
Điều kiện của các phần tử phía trên đường chéo chính là i >j
Điều kiện số dương là a[i][j] > 0
Sưu tầm bởi: www.daihoc.com.vn
Tìm kiếm
#define SIZE 5
int TimTrenCheo2 (int a[SIZE][SIZE], int x)
{
int i,j;
for(i = 0; i < SIZE; i++)
for(j = 0; j < SIZE; j++)
{
if(i+j<=SIZE-1 && a[i][j] == x)
return 1;
}
return 0;
}
Tìm xem một số x có xuất hiện trong phần tam giác phía
trên đường chéo phụ của mảng hay không
Sưu tầm bởi: www.daihoc.com.vn
Tìm phần tử lớn nhất trong mảng
#define SIZE 5
int LonNhat (int a[SIZE][SIZE])
{
int i,j;
int max = a[0][0];
for(i = 0; i < SIZE; i++)
for(j = 0; j < SIZE; j++)
{
if(a[i][j] > max)
max = a[i][j];
}
return max;
}
Duyệt qua tất cả các phần tử, dùng một biến max để lưu trữ
giá trị lớn nhất
Sưu tầm bởi: www.daihoc.com.vn
Tìm phần tử lớn nhất trong mảng
#define SIZE 5
int LonNhat (int a[SIZE][SIZE])
{
int i,j;
int max = a[0][0];
for(i = 0; i < SIZE; i++)
for(j = 0; j < SIZE; j++)
{
if(a[i][j] > max)
max = a[i][j];
}
return max;
}
Duyệt qua tất cả các phần tử, dùng một biến max để lưu trữ
giá trị lớn nhất
Sưu tầm bởi: www.daihoc.com.vn
Bài tập
Chương 5: 6,7,8,9
Sưu tầm bởi: www.daihoc.com.vn
Sưu tầm bởi: www.daihoc.com.vn
Các file đính kèm theo tài liệu này:
- thuattoanmang2chieu_1316.pdf