- Phứộng th c tr vếầ true nếếu mang là ma tr n đôếi x ng, ngươứảậứượ ạc l i tr vếầ ảfalse.Mã giả: Vòng lập i Vòng lập jNếu mang[i,j] != mang[j,i]Chỉ cần 1 giá trị của mảng không đúng mản
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM
-
-MÔN HỌC: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
HỌC KỲ 2 NĂM HỌC 2021-2022 Ngày 10/2/2023 Tiết 4-6 Thứ 6
NHÓM SINH VIÊN THỰC HIỆN:
Vũ Đức Thắng20119287
Thành phố Hồ Chí Minh, 02/2023
Trang 2Bài 1: Viếết ph ươ ng th c mang.DoiXung( ) nh sau: - mang là m t ma tr n vuông, môỗi phầần t ứ ư ộ ậ ử
ch a m t sôế nguyến - Ph ứ ộ ng th c tr vếầ true nếếu mang là ma tr n đôếi x ng, ng ươ ứ ả ậ ứ ượ ạ c l i tr vếầ ả false.
Mã giả:
Vòng lập i
Vòng lập j
Nếu mang[i,j] != mang[j,i]
Chỉ cần 1 giá trị của mảng không đúng mảng không đối xứng
Ngược lại là đối xứng
Code:
Kết quả:
Trang 3Mảng là [ 3 2 3 1
2 3 4 3
2 3 1 2
3 2 3 4]
Kết quả là không đối xứng vậy kết quả thuật toán là đúng
Bài 2: Viếết ph ươ ng th c mang.TamGiacTren( ) nh sau: - mang là m t ma tr n vuông, môỗi ứ ư ộ ậ phầần t ch a m t sôế nguyến - Ph ử ứ ộ ươ ng th c tr vếầ true nếếu mang là ma tr n tam giác trến, ng ứ ả ậ ượ c
l i tr vếầ false ạ ả
Mã giả:
Vòng lập i
Vòng lập j
Nếui > j && mang[i,j] != 0
Chỉ cần 1 giá trị của mảng không đúng mảng không phải là ma trận tam giác trên
Ngược lại là là ma trận tam giác trên
Code:
Trang 4Kết quả:
Trang 5Bài 3: Viếết ph ươ ng th c mang.TrungHang( ) nh sau: - mang là m t ma tr n vuông, môỗi phầần ứ ư ộ ậ
t ch a m t sôế nguyến - Ph ử ứ ộ ng th c tr vếầ true nếếu mang có ít nhầết hai hàng giôếng nhau, ươ ứ ả
Chạy vòng lập k để lập qua từng giá trị
Nếu mang[I,k] != mang[j , k]
Thì hàng đó không trùng và tiếp với j+1
Trang 6Kết quả:
Mảng = [2 3 2 3
1 2 1 2
Trang 72 3 2 3
4 4 3 4]
Ta thấy hàng 1 và hàng 3 trùng nhau nên đáp án là có ít nhất 2 hàngtrùng nhau nên thuật toán đúng
Bài 4: Viếết ph ươ ng th c mang.NhomHang( ) nh sau: - mang là m t ma tr n vuông, môỗi phầần ứ ư ộ ậ
t ch a m t sôế nguyến - Ph ử ứ ộ ươ ng th c in ra nhóm ch m c hàng c a các hàng giôếng nhau, môỗi ứ ỉ ụ ủ nhóm đ c bắết đầầu in đầầu hàng màn hình ượ ở
So sánh hàng này lần lượt với các hàng khác
Nếu mang[i,k] != mang[j,k]
Thì không trùng hàng
Ngược lại thì trùng hàng
Code:
Trang 8Kết quả:
Trang 9Mảng [2 2 2 2
1 2 1 2
2 2 2 2
1 2 1 2]
Hàng 1 3 trùng nhau và hàng 2 4 trùng nhau nên kết quả đúng
Bài 5: Viếết ph ươ ng th c a.Cong(b) nh sau: - a và b là các sôế nguyến không dầếu đ ứ ư ượ c ch a ứ trong m ng m t chiếầu, môỗi phầần t ch a m t ký sôế - Ph ả ộ ử ứ ộ ng th c tr vếầ m t sôế nguyến là kếết ươ ứ ả ộ
qu c a a + b nếếu kếết qu không b tràn ho c tr vếầ m ng gôầm các sôế -1 nếếu kếết qu b tràn ả ủ ả ị ặ ả ả ả ị
Trang 10Bài 6: Viếết ph ươ ng th c a.Tru(b) nh sau: ứ ư
- a và b là các sôế nguyến không dầếu đ c ch a trong m ng m t chiếầu, môỗi phầần t ch a m t ký sôế ượ ứ ả ộ ử ứ ộ
và a ≥ b
- Ph ng th c tr vếầ m t sôế nguyến là kếết qu c a a - b ươ ứ ả ộ ả ủ
Mã giả:
Trang 13Ngược lại là là ma trận tam giác dưới.Code:
Trang 14Kết quả không là ma trận tam giác dưới nên kết quả đúng.
Bai 9: Viếết ph ươ ng th c mang.TrungCot( ) nh sau: ứ ư
- mang là m t ma tr n vuông, môỗi phầần t ch a m t sôế nguyến ộ ậ ử ứ ộ
- Ph ng th c tr vếầ true nếếu mang có ít nhầết hai c t giôếng nhau, ng ươ ứ ả ộ ượ ạ c l i tr vếầ false ả
So sánh cột này lần lượt với các cột khác
Nếu mang[k,i] != mang[j,j]
Thì không trùng cột
Ngược lại thì trùng cột
Code:
Trang 15Kết quả:
Trang 16Bài 10: Viếết ph ươ ng th c mang.NhomCot( ) nh sau: - mang là m t ma tr n vuông, môỗi phầần ứ ư ộ ậ
t ch a m t sôế nguyến - Ph ử ứ ộ ươ ng th c in ra nhóm ch m c c t c a các c t giôếng nhau, môỗi nhóm ứ ỉ ụ ộ ủ ộ
đ c bắết đầầu in đầầu hàng màn hình ượ ở
Mã giả:
Trang 17Đặt một biến Boolean để xét cột đó đã xét chưa
Trang 18Và kết quả đưa ra của thuật toán là đúng.
Bài 11: Viếết ph ươ ng th c a.Cong(b) nh sau: - a và b là các sôế nguyến (ầm, 0 ho c d ứ ư ặ ươ ng) bao gôầm hai phầần: phầần dầếu đ ượ c ch a trong m t sôế nguyến (0 bi u diếỗn sôế d ứ ộ ể ươ ng và 1 bi u diếỗn cho ể sôế ầm) và phầần sôế đ c ch a trong m ng m t chiếầu (môỗi phầần t ch a m t ký sôế) - Ph ượ ứ ả ộ ử ứ ộ ươ ng th c ứ
tr vếầ m t sôế nguyến là kếết qu c a a + b nếếu kếết qu không b tràn ho c tr vếầ m ng gôầm các sôế -1 ả ộ ả ủ ả ị ặ ả ả nếếu kếết qu b tràn ả ị
Mã giả:
Cộng hai mảng
Nếu phần tử đầu của mảng là 0 hoặc 1 (mang[0] = 0 || 1)
Trang 19Thì trả về d = mang[1] nếu là 0 ngược lại là d = -mang[1]Tương tự với c đối với mảng 2
Trang 20Ta có 2 mảng a = [0 , 3]
Mảng b = [ 0, 5 ]
Do số đầu của 2 mảng là 0 nên ta được kết quả là 3 +5 = 8
Kết quả này nhỏ hơn 10 nên in ra 8
Ngược lại nếu lớn hơn 10 thì:
Trả về mảng -1 -1
Bài 12: Viếết phương th c a.Tru(b) nh sau: - a và b là các sốế nguyến (âm, 0 ho c dứ ư ặ ươ ng) bao gốồm hai phâồn: phâồn dâếu đ c ch a trong m t sốế nguyến (0 bi u diếễn sốế dượ ứ ộ ể ương và 1 bi u diếễn cho sốếểâm) và phâồn sốế đ c ch a trong m ng m t chiếồu (mốễi phâồn t ch a m t ký sốế) - Phượ ứ ả ộ ử ứ ộ ươ ng th c tr ứ ảvếồ m t sốế nguyến là kếết qu c a a – b nếếu kếết qu khống b tràn ho c tr vếồ m ng gốồm các sốế -1 nếếu ộ ả ủ ả ị ặ ả ảkếết qu b tràn.ả ị
Mã giả:
Cộng hai mảng
Nếu phần tử đầu của mảng là 0 hoặc 1 (mang[0] = 0 || 1)
Thì trả về d = mang[1] nếu là 0 ngược lại là d = -mang[1]
Tương tự với c đối với mảng 2
Trang 21Kết quả:
Nếu a [0;3] b = [0; 3] kết quả là 0 đúng với thuật toán.Nếu kết quả < 0 thì trả về mảng -1
Trang 22Bài 13: Viếết ph ươ ng th c a.Nhan(b) nh sau: - a và b là các sôế nguyến (ầm, 0 ho c d ứ ư ặ ươ ng) bao gôầm hai phầần: phầần dầếu đ ượ c ch a trong m t sôế nguyến (0 bi u diếỗn sôế d ứ ộ ể ươ ng và 1 bi u diếỗn ể cho sôế ầm) và phầần sôế đ c ch a trong m ng m t chiếầu (môỗi phầần t ch a m t ký sôế) - Ph ượ ứ ả ộ ử ứ ộ ươ ng
th c tr vếầ m t sôế nguyến là kếết qu c a a × b nếếu kếết qu không b tràn ho c tr vếầ m ng gôầm các ứ ả ộ ả ủ ả ị ặ ả ả sôế -1 nếếu kếết qu b tràn ả ị
Mã giả:
Cộng hai mảng
Nếu phần tử đầu của mảng là 0 hoặc 1 (mang[0] = 0 || 1)
Thì trả về d = mang[1] nếu là 0 ngược lại là d = -mang[1]
Tương tự với c đối với mảng 2
Trang 23Kết quả
Hai mảng a= [0;2] và b = [0;3]
Do số đầu của cả 2 mảng bằng 0 nên kết quả bằng 2*3 =6Kết quả này nhỏ hơn < 10 nên in ra 6
Trang 24Ngược lại nếu lớn hơn 10:
Trả về mảng -1 -1
Bài 14: Viếết ph ươ ng th c a.DayConDauTien(b) nh sau: - a, b là hai m ng m t chiếầu, môỗi ứ ư ả ộ phầần t ch a m t sôế nguyến - Ph ử ứ ộ ng th c tr vếầ m t m ng c ch a dãy con (bao gôầm các sôế liến ươ ứ ả ộ ả ứ tếếp nhau trong m ng) c a lầần g p đầầu tến (đi t trái qua ph i) mà dãy con này đôầng th i có trong ả ủ ặ ừ ả ờ
Trang 26Vì vậy kết quả trả về của thuật toán là đúng theo yêu cầu.
Bài 15: Viếết ph ươ ng th c a.DayConDaiNhat(b) nh sau: - a, b là hai m ng m t chiếầu, môỗi ứ ư ả ộ phầần t ch a m t sôế nguyến - Ph ử ứ ộ ng th c tr vếầ m t m ng c ch a dãy con (bao gôầm các sôế liến ươ ứ ả ộ ả ứ tếếp nhau trong m ng) c a lầần g p đầầu tến (đi t trái qua ph i) có chiếầu dài (sôế l ả ủ ặ ừ ả ượ ng phầần t ) ử
l n nhầết mà dãy con này đôầng th i có trong m ng a và m ng b - Ví d : m ng a ch a các sôế 1, 6, 2, ớ ờ ả ả ụ ả ứ
Trang 27Bài 16: Viếết ph ươ ng th c mang.Dao( ) nh sau: - mang là m t ma tr n vuông, môỗi phầần t ứ ư ộ ậ ử
ch a m t sôế nguyến: sôế 0 bi u diếỗn ô n ứ ộ ể c, sôế 1 bi u diếỗn ô đầết Đ o là m t vùng bao gôầm các ô ướ ể ả ộ đầết kếầ c nh (không kếầ góc) - Ph ạ ng th c in ra di n tch l n nhầết (sôế ô đầết) c a các đ o có d ng ươ ứ ệ ớ ủ ả ạ hình ch nh t (k c hình vuông) ữ ậ ể ả
Mã giả:
Cho 2 vòng lập i và j để chọc vào giá trị của mảng
Thuật toán sẽ chọc vào từng giá trị theo row và col nếu row = 1 và col = 1 thì
Thì giá trị k ++
Nếu ô tiếp theo có row và col = 1 thì k++
Cho đến khi lọc qua hết mảng thì diện tích là k^2
Code:
Trang 28Kết quả:
Ứng với mảng: