1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập lớn cấu trúc dữ liệu và giải thuật

28 2 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài tập lớn cấu trúc dữ liệu và giải thuật
Tác giả Vũ Đức Thắng
Trường học Trường Đại Học Sư Phạm Kỹ Thuật TP. HCM
Chuyên ngành Cấu Trúc Dữ Liệu Và Giải Thuật
Thể loại Bài tập lớn
Năm xuất bản 2022
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 28
Dung lượng 4,29 MB

Nội dung

- 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 1

BỘ 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 2

Bà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 3

Mả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 4

Kết quả:

Trang 5

Bà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 6

Kết quả:

Mảng = [2 3 2 3

1 2 1 2

Trang 7

2 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 8

Kết quả:

Trang 9

Mả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 10

Bà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 13

Ngược lại là là ma trận tam giác dưới.Code:

Trang 14

Kế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 15

Kết quả:

Trang 16

Bà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 18

Và 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 19

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 20

Ta 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 21

Kế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 22

Bà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 23

Kế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 24

Ngượ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 26

Vì 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 27

Bà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 28

Kết quả:

Ứng với mảng:

Ngày đăng: 16/04/2024, 16:29

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w