1. Trang chủ
  2. » Công Nghệ Thông Tin

Đếm số lượng giá trị “hoàng hậu” trên ma trận một phần tử được gọi là hoàng hậu khi nó lớn nhất trên dòng, trên cột và 2 đường chéo đi qua nó

7 3,8K 52

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 35,1 KB

Nội dung

Bài 346(*): Đếm số lượng giá trị “Hoàng Hậu” ma trận Một phần tử gọi Hoàng Hậu lớn dòng, cột đường chéo qua #include #include #include #define MAX 100 void NhapMang(int a[][MAX], int &dong, int &cot) { //Nhập số dòng { printf("\nNhap vao so dong: "); // Cách tà đạo: scanf("dong =%d",&dong); // Lúc nhập phải viết thêm scanf("%d",&dong); if(dong < || dong > MAX) { printf("\nSo dong khong hop le Xin kiem tra lai!"); } }while(dong < || dong > MAX); //Nhập số cột chữ ( dong = ) khung console { printf("\nNhap vao so cot: "); scanf("%d",&cot); if(cot < || cot > MAX) { printf("\nSo cot khong hop le Xin kiem tra lai!"); } }while(cot < || cot > MAX); for(int i = 0; i < dong; i++) { for(int j = 0; j < cot; j++) { printf("\nNhap a[%d][%d] = ", i, j); scanf("%d", &a[i][j]); } } } void XuatMang(int a[][MAX], int dong, int cot) { for(int i = 0; i < dong; i++) { for(int j = 0; j < cot; j++) { printf("%4d", a[i][j]); } printf("\n\n"); } } /* - Kiểm tra phần tử có lớn dòng đứng hay không ? - Kiểm tra phần tử có lớn cột đứng hay không ? - Kiểm tra phần tử có lớn đường chéo hay không (Đây hàm phức tạp) Trường hợp cho duyệt theo hướng (4 while): + từ vị trí phần tử tại, i , j (giảm qua trái) + từ vị trí phần tử i ,j++ (giảm phải) + // i++,j++ (tăng phải) + // i++,j (tăng trái) Sau thực hàm trên, duyệt ma trận tìm phần tử "Hoàng Hậu" */ bool KiemTraCoPhaiPhanTuHoangHau(int a[][MAX], int vtdong, int vtcot, int dong, int cot) { int x = a[vtdong][vtcot]; // kiểm tra dòng for(int i = 0; i < cot; i++) { if(a[vtdong][i] > x) { return false; } } // kiểm tra cột for(int j = 0; j < dong; j++) { if(a[j][vtcot] > x) { return false; } } //ktra duong cheo thu nhat int vtdong1 = vtdong + 1; int vtcot1 = vtcot + 1; while (vtcot1 + < cot && vtdong1 < vtdong) { if (a[vtcot1][vtdong1] > x) return false; // tăng phải vtcot1++; vtdong1++; } vtdong1 = vtdong - 1; vtcot1 = vtcot - 1; while (vtcot1 - >= && vtdong1 >= 0) { if (a[vtcot1][vtdong1] > x) return false; //giảm qua trái vtcot1 ; vtdong1 ; } // duong cheo thu vtdong1 = vtdong + 1; vtcot1 = vtcot - 1; while (vtcot1 - >= && vtdong1 < dong) { if (a[vtcot1][vtdong1] > x) return false; // tăng trái vtdong1++; vtcot1 ; } vtdong1 = vtdong - 1; vtcot1 = vtcot + 1; while (vtdong1 - >= && vtcot1 < cot) { if (a[vtcot1][vtdong1] > x) return false; // giảm phải vtdong1 ; vtcot1++; } return true; } int DemSoLuongPhanTuHoangHau(int a[][MAX], int dong, int cot) { int dem = 0; for(int i = 0; i < dong; i++) { for(int j = 0; j < cot; j++) { if(KiemTraCoPhaiPhanTuHoangHau(a, i, j, dong, cot) == true) { dem++; } } } return dem; } int main() { int a[MAX][MAX], dong, cot; NhapMang(a, dong, cot); XuatMang(a, dong, cot); int dem = DemSoLuongPhanTuHoangHau(a, dong, cot); printf("\nSo luong phan tu hoang hau = %d", dem); getch(); return 0; }

Ngày đăng: 20/10/2016, 21:06

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w