Tải bản đầy đủ (.pdf) (43 trang)

báo cáo buổi thực hành số 3 bộ môn kỹ thuật lập trình

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.7 MB, 43 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

BÁO CÁO BUỔI THỰC HÀNH SỐ 3Bộ Mơn Kỹ Thuật Lập Trình

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

Danh 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

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

Figure 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

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

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

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

Figure 2. Bài 3.2_TuanNT_0906

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Figure 4. Bài 3.2_TuanNT_0906

6

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Figure 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ố ngun (n 1≤n≤16)

n dòng tiếp theo: Chứa ma trận c (0≤ci,j≤1000000)

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

Dữ 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

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Figure 7. Bài 3.3_TuanNT_0906

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

1.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|≤ … (

10<small>9</small>

)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

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Figure 9. Bài 3.4_TuanNT_0906

Figure 10. Bài 3.4_TuanNT_0906

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Figure 11. Bài 3.4_TuanNT_0906

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Figure 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

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Figure 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

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Mộ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

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Figure 18. Bài 3.7_TuanNT_0906

Figure 19. Bài 3.7_TuanNT_0906

18

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

Figure 20. Bài 3.7_TuanNT_0906

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

Figure 21. Bài 3.7_TuanNT_0906

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

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

Figure 22. Bài 3.8_TuanNT_0906

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

Figure 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

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

Ghi 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

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

Figure 24. Bài 3.9_TuanNT_0906

24

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

Figure 25. Bài 3.9_TuanNT_0906

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

Figure 26. Bài 3.9_TuanNT_0906 - Test1

Figure 27. Bài 3.9_TuanNT_0906 - Test2

26

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

Figure 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ả:

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

24 21 0

Kết quả mẫu:0011010101101001101011000

Figure 29. Bài 3.10_TuanNT_0906

28

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

Figure 30. Bài 3.10_TuanNT_0906

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

Figure 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. Đồn khách tham quan có người với sở thích chụp ảnh khác nhau. r

30

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

Theo đó, 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

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

Kết quả mẫu:5

Figure 32. Bài 3.11_TuanNT_0906 - Test1

32

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

Figure 33. Bài 3.11_TuanNT_0906

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

Figure 34. Bài 3.11_TuanNT_0906

34

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

Figure 35. Bài 3.11_TuanNT_0906 - Test1

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

Figure 36. Bài 3.11_TuanNT_0906 - Test2

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

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

mm 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

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

Figure 37. Bài 3.12_TuanNT_0906

38

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

Figure 38. Bài 3.12_TuanNT_0906

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

Figure 39. Bài 3.12_TuanNT_0906 - Test1

40

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">

Figure 40. Bài 3.12_TuanNT_0906 - Test2

</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">

Figure 41. Bài 3.12_TuanNT_0906 - Test3

Figure 42. Bài 3.12_TuanNT_0906 - Test4

42

</div><span class="text_page_counter">Trang 41</span><div class="page_container" data-page="41">

Figure 43. Bài 3.12_TuanNT_0906 - Test5

</div><span class="text_page_counter">Trang 42</span><div class="page_container" data-page="42">

Figure 44. Bài 3.12_TuanNT_0906 - Test6

Figure 45. Bài 3.12_TuanNT_0906 - Test7

44

</div><span class="text_page_counter">Trang 43</span><div class="page_container" data-page="43">

Figure 46. Bài 3.12_TuanNT_0906 - Test8

</div>

×