Một dãy con của là dãy thu được bằnganacách xóa đi một số phần tử của và giữ nguyên thứ tự các phần atử còn lại có thể không xóa phần tử nào.. Bài 3.6_TuanNT_0906Bài tập 7: Liệt kê xâu n
Trang 1BÁO CÁO BUỔI THỰC HÀNH SỐ 3Bộ Môn Kỹ Thuật Lập Trình
Trang 2Danh mục hình ảnh 2
Bài thực hành số 3 – Tuần 14 4
Phần 1 Thực hành về đệ quy 4
1.1 Đệ quy - quay lui 4
Bài tập 1: Tính dãy Lucas 4
Bài tập 2: Quân mã đi tuần 4
Bài tập 6: Tìm ước chung lớn nhất 15
Bài tập 7: Liệt kê xâu nhị phân 16
Bài tập 8: Cân đĩa 20
Figure 2 Bài 3.2_TuanNT_0906 5
Figure 3 Bài 3.2_TuanNT_0906 6
Figure 4 Bài 3.2_TuanNT_0906 6
Figure 5 Bài 3.2_TuanNT_0906 7
Figure 6 Bài 3.3_TuanNT_0906 8
Figure 7 Bài 3.3_TuanNT_0906 9
Figure 8 Bài 3.3_TuanNT_0906 9
Figure 9 Bài 3.4_TuanNT_0906 11
Figure 10 Bài 3.4_TuanNT_0906 11
Figure 11 Bài 3.4_TuanNT_0906 12
Figure 12 Bài 3.5_TuanNT_0906 122
Trang 3Figure 13 Bài 3.5_TuanNT_0906 13
Figure 14 Bài 3.5_TuanNT_0906 14
Figure 15 Bài 3.5_TuanNT_0906 15
Figure 16 Bài 3.6_TuanNT_0906 16
Figure 17 Bài 3.6_TuanNT_0906 16
Figure 18 Bài 3.7_TuanNT_0906 18
Figure 19 Bài 3.7_TuanNT_0906 18
Figure 20 Bài 3.7_TuanNT_0906 19
Figure 21 Bài 3.7_TuanNT_0906 20
Figure 22 Bài 3.8_TuanNT_0906 21
Figure 23 Bài 3.8_TuanNT_0906 22
Figure 24 Bài 3.9_TuanNT_0906 24
Figure 25 Bài 3.9_TuanNT_0906 25
Figure 26 Bài 3.9_TuanNT_0906 - Test1 26
Figure 27 Bài 3.9_TuanNT_0906 - Test2 26
Figure 28 Bài 3.9_TuanNT_0906 - Test3 27
Figure 29 Bài 3.10_TuanNT_0906 28
Figure 30 Bài 3.10_TuanNT_0906 29
Figure 31 Bài 3.10_TuanNT_0906 - Test1 30
Figure 32 Bài 3.11_TuanNT_0906 - Test1 32
Figure 33 Bài 3.11_TuanNT_0906 33
Figure 34 Bài 3.11_TuanNT_0906 34
Figure 35 Bài 3.11_TuanNT_0906 - Test1 35
Figure 36 Bài 3.11_TuanNT_0906 - Test2 36
Figure 37 Bài 3.12_TuanNT_0906 38
Figure 38 Bài 3.12_TuanNT_0906 39
Figure 39 Bài 3.12_TuanNT_0906 - Test1 40
Figure 40 Bài 3.12_TuanNT_0906 - Test2 41
Figure 41 Bài 3.12_TuanNT_0906 - Test3 42
Figure 42 Bài 3.12_TuanNT_0906 - Test4 42
Figure 43 Bài 3.12_TuanNT_0906 - Test5 43
Figure 44 Bài 3.12_TuanNT_0906 - Test6 44
Figure 45 Bài 3.12_TuanNT_0906 - Test7 44
Figure 46 Bài 3.12_TuanNT_0906 - Test8 45
Trang 4Bài thực hành số 3 – Tuần 14
Phần 1 Thực hành về đệ quy1.1 Đệ quy - quay lui
Bài tập 1: Tính dãy Lucas
Dãy Lucas được định nghĩa bởi Ln=Ln−1+Ln−2 và bắt đầu bởi L0=2 L1=1, Viết hàm tính số Lucas thứ n
Figure 1 Bài 3.1_TuanNT_0906
Bài tập 2: Quân mã đi tuần
Trên bàn cờ vua kích thước n×n có một quân mã đang ở ô (1, 1) Hãy đưa ra một dãy các di chuyển của mã sao cho mỗi ô trên bàncờ đều được đi qua đúng 1 lần (ô (1, 1) được xem là đã đi qua)
4
Trang 5Figure 2 Bài 3.2_TuanNT_0906
Trang 6Figure 4 Bài 3.2_TuanNT_0906
6
Trang 7Figure 5 Bài 3.2_TuanNT_0906
1.2 Kỹ thuật nhánh cận
Bài tập 3: Bài toán người du lịch
Một người xuất phát tại thành phố 1, muốn đi thăm tất cả các thành phố khác, mỗi thành phố đúng 1 lần và quay về 1 Chi phí để đi từ thành phố sang thành phố là ij ci,j Hãy tìm tổng chi phí nhỏ nhất có thể
Dữ liệu vào:
Dòng 1: Chứa số nguyên (n 1≤n≤16)
n dòng tiếp theo: Chứa ma trận c (0≤ci,j≤1000000)
Trang 8Dữ liệu mẫu: 40 2 1 34 0 1 22 1 0 33 4 2 0Kết quả mẫu:7
Figure 6 Bài 3.3_TuanNT_0906
8
Trang 9Figure 7 Bài 3.3_TuanNT_0906
Trang 101.3 Đệ quy có nhớBài tập 4: LIS
Cho dãy có phần tử Một dãy con của là dãy thu được bằnganacách xóa đi một số phần tử của và giữ nguyên thứ tự các phần atử còn lại (có thể không xóa phần tử nào) Hãy tìm dãy con tăng dài nhất của a
Dữ liệu vào:
Dòng 1: Chứa số nguyên (n 1≤n≤1000)
Dòng 2: Chứa số nguyên na1 a2 … an |ai|≤ … ( 109)Kết quả:
Dòng đầu tiên chứa độ dài dãy con tăng dài nhất
Dòng thứ 2 chứa chỉ số các phần tử được chọn vào dãy con đóNếu có nhiều dãy con tăng dài nhất, in ra dãy bất kỳ trong số đóVí dụ:
Dữ liệu mẫu:6
2 1 5 4 3 6Kết quả mẫu:3
2 5 6Hướng dẫn:
Bài toán này được giải bằng phương pháp quy hoạch động.Giả sử lis(i) là độ dài dãy con tăng dài nhất kết thúc tại Khi đóaita có công thức truy hồi sau:
10
Trang 11Figure 9 Bài 3.4_TuanNT_0906
Figure 10 Bài 3.4_TuanNT_0906
Trang 12Figure 11 Bài 3.4_TuanNT_0906
Trang 13Figure 15 Bài 3.5_TuanNT_0906
Bài tập 6: Tìm ước chung lớn nhấtTính ước chung lớn nhất của hai số cho trước
Trang 14Figure 16 Bài 3.6_TuanNT_0906
Figure 17 Bài 3.6_TuanNT_0906
Bài tập 7: Liệt kê xâu nhị phân
Sử dụng phương pháp khử đệ quy bằng stack, hãy liệt kê các xâu nhị phân độ dài không có bit 1 nào liên tiếpnk
Dữ liệu vào:
16
Trang 15Một dòng duy nhất chứa hai số nguyên n (n k 1≤k≤n≤20)Kết quả:
Với mỗi xâu tìm được, in ra ký tự trên một dòng, các ký tự cáchnnhau bởi dấu cách Các xâu cần được liệt kê theo thứ tự từ điểnVí dụ:
Dữ liệu mẫu:4 2
Kết quả mẫu:0 0 0 00 0 0 10 0 1 00 1 0 00 1 0 11 0 0 01 0 0 11 0 1 0
Trang 16Figure 18 Bài 3.7_TuanNT_0906
Figure 19 Bài 3.7_TuanNT_0906
18
Trang 17Figure 20 Bài 3.7_TuanNT_0906
Trang 18Figure 21 Bài 3.7_TuanNT_0906Bài tập 8: Cân đĩa
Bạn đang muốn kiểm tra xem một vật cho trước có đúng nặng Mnhư người ta nói hay không Có một cân thăng bằng và quả ncân Quả thứ nặng imi Hãy chỉ ra một cách cân thỏa mãn Quy cách in ra đã được tích hợp trong mã nguồn dưới.
Dữ liệu mẫu:6 107 1 2 3 4 5Kết quả mẫu:-1+2+3+4+5=10
20
Trang 19Figure 22 Bài 3.8_TuanNT_0906
Trang 20Figure 23 Bài 3.8_TuanNT_0906
Phần 3 Bài tập về nhàSinh viên tự làm các bài tập sau:Bài tập 9: Lập lịch cho y tá
Một y tá cần lập lịch làm việc trong ngày, mỗi ngày chỉ có thể làNlàm việc hay nghỉ ngơi Một lịch làm việc là tốt nếu không có hai ngày nghỉ nào liên tiếp và mọi chuỗi ngày tối đại làm việc liên tiếp đều có số ngày thuộc đoạn [K1,K2] Hãy liệt kê tất cả các cách lập lịch tốt, với mỗi lịch in ra trên một dòng một xâu nhị phân độ dài với bit 0/1 tương ứng là nghỉ/làm việc Các xâu phải được innra theo thứ tự từ điển
Dữ liệu vào:
Ghi 3 số nguyên N,K1,K2 N≤200,K1<K2≤70 ()Kết quả:
22
Trang 21Ghi danh sách các lịch tìm được theo thứ tự từ điểnVí dụ:
Dữ liệu mẫu:6 2 3Kết quả mẫu:011011110110110111111011
Trang 22Figure 24 Bài 3.9_TuanNT_0906
24
Trang 23Figure 25 Bài 3.9_TuanNT_0906
Trang 24Figure 26 Bài 3.9_TuanNT_0906 - Test1
Figure 27 Bài 3.9_TuanNT_0906 - Test2
26
Trang 25Figure 28 Bài 3.9_TuanNT_0906 - Test3
Bài tập 10: Khoảng cách Hamming
Khoảng cách Hamming giữa hai xâu cùng độ dài là số vị trí mà kýtự tại vị trí đó là khác nhau trên hai xâu Cho là xâu gồm ký tựSn0 Hãy liệt kê tất cả các xâu nhị phân độ dài , có khoảng cách nHamming với bằng Các xâu phải được liệt kê theo thứ tự từ SHđiển
Dữ liệu vào:
Dòng đầu chứa là số testcaseT
T dòng tiếp theo, mỗi dòng mô tả một testcase, ghi và (NH 1≤H≤N≤16)
Kết quả:
Trang 2624 21 0
Kết quả mẫu:0011010101101001101011000
Figure 29 Bài 3.10_TuanNT_0906
28
Trang 27Figure 30 Bài 3.10_TuanNT_0906
Trang 28Figure 31 Bài 3.10_TuanNT_0906 - Test1
Bài tập 11: Lịch trình chụp ảnh
Superior là một hòn đảo tuyệt đẹp với địa điểm chụp ảnh và ncác đường một chiều nối các điểm chụp ảnh với nhau Đoàn khách tham quan có người với sở thích chụp ảnh khác nhau r
30
Trang 29Theo đó, mỗi người sẽ đưa ra danh sách các địa điểm mà họ muốn chụp Bạn cần giúp mỗi người trong đoàn lập lịch di chuyểnsao cho đi qua các điểm họ yêu cầu đúng một lần, không đi qua điểm nào khác, bắt đầu tại điểm đầu tiên và kết thúc tại điểm cuốicùng trong danh sách mà họ đưa ra, và có tổng khoảng cách đi lại là nhỏ nhất.
Dữ liệu vào:
Dòng đầu chứa và nr
Tiếp theo là ma trận n×n mô tả chi phí đi lại giữa các địa điểm Chi phí bằng 0 có nghĩa là không thể đi lại giữa hai địa điểm đó.r dòng tiếp theo chứa danh sách các địa điểm mà người đưa ra.rLưu ý là hành mỗi hành trình cần phải bắt đầu và kết thúc bởi hai đỉnh đầu và cuối của danh sách, còn các địa điểm còn lại có thể thăm theo bất kỳ thứ tự nào
Kết quả:
Gồm dòng ghi chi phí đi lại ít nhất của người theo thứ tự đầu rrvào
Ví dụ:Dữ liệu mẫu:6 3
0 1 2 0 1 11 0 1 1 1 00 2 0 1 3 0
Trang 30Kết quả mẫu:5
Figure 32 Bài 3.11_TuanNT_0906 - Test1
32
Trang 31Figure 33 Bài 3.11_TuanNT_0906
Trang 32Figure 34 Bài 3.11_TuanNT_0906
34
Trang 33Figure 35 Bài 3.11_TuanNT_0906 - Test1
Trang 34Figure 36 Bài 3.11_TuanNT_0906 - Test2Bài tập 12: Đếm đường đi
Cho đồ thị vô hướng , hãy đếm số đường đi đi qua cạnh và Gkkhông đi qua đỉnh nào quá một lần.
Dữ liệu vào:
Dòng 1: Chứa hai số nguyên n và k (nk 1≤n≤30 1≤k≤10, ) với n là số đỉnh của Các đỉnh sẽ được đánh số từ 1 đến GnDòng 2: Chứa số nguyên (m 1≤m≤60) là số cạnh của G
36
Trang 35mm dòng tiếp theo: Mỗi dòng chưa hai số nguyên là một cạnh của G
Kết quả:
Số lượng đường đi đơn độ dài kVí dụ:
Dữ liệu mẫu:4 3
51 21 31 42 33 4
Kết quả mẫu:6
Trang 36Figure 37 Bài 3.12_TuanNT_0906
38
Trang 37Figure 38 Bài 3.12_TuanNT_0906
Trang 38Figure 39 Bài 3.12_TuanNT_0906 - Test1
40
Trang 39Figure 40 Bài 3.12_TuanNT_0906 - Test2
Trang 40Figure 41 Bài 3.12_TuanNT_0906 - Test3
Figure 42 Bài 3.12_TuanNT_0906 - Test4
42
Trang 41Figure 43 Bài 3.12_TuanNT_0906 - Test5
Trang 42Figure 44 Bài 3.12_TuanNT_0906 - Test6
Figure 45 Bài 3.12_TuanNT_0906 - Test7
44
Trang 43Figure 46 Bài 3.12_TuanNT_0906 - Test8