Tìm hiểu chương trình giúp giải quyết các yêu cầu b), c), d) của bài toán Giao hữu bóng đá
Tìm hiểu chương trình giúp giải quyết các yêu cầu b), c), d) của bài toán Giao hữu bóng đá.
Giải Chuyên đề Tin 12 Bài 3: Thực hành các thao tác cơ bản với đồ thị trên máy tính - Cánh diều
Vận dụng 1 trang 61 Chuyên đề Tin học 12: Tìm hiểu chương trình giúp giải quyết các yêu cầu b), c), d) của bài toán Giao hữu bóng đá.
a) Tìm hiểu chương trình ở Hình 2, dữ liệu được nhập vào như sau:
- Nhập hai số nguyên dương n, m (trong đó n là số đội bóng tham gia, m là số trận đấu đã diễn ra).
- Nhập m cặp số in j (0 ≤i j n; i t j, với k = 1,2,..., m), trong đó mỗi cặp số tương ứng với một cạnh của đồ thị nối từ dinh ik đến đỉnh jk, Cho biết đội i, đã đấu với đội jk và đội ik giành chiến thắng.
b) Em hãy cho biết ? trong Hình 3 được thay bằng đại lượng thích hợp nào, sau đó ghép với đoạn chương trình ở Hình 2 để hiển thị ma trận kề của đồ thị.
c) Em hãy cho biết ? trong Hình 4 được thay bằng đại lượng thích hợp nào, sau đó ghép với đoạn chương trình ở Hình 2 để hiến thị bậc ra của các đinh 0, 1,..., n - 1.
d) Thử nghiệm với dữ liệu đã tạo ở yêu cầu a) trong bài toán Giao hữu bóng đá.
Lời giải:
a) Thực hiện tìm hiểu chương trình ở Hình 2, nhập vào dữ liệu như sau:
- Nhập hai số nguyên dương n, m (trong đó n là số đội bóng tham gia, m là số trận đấu đã diễn ra).
- Nhập m cặp số in j (0 ≤i j n; i t j, với k = 1,2,..., m), trong đó mỗi cặp số tương ứng với một cạnh của đồ thị nối từ dinh ik đến đỉnh jk, Cho biết đội i, đã đấu với đội jk và đội ik giành chiến thắng.
b) Ma trận kề: Để hiển thị ma trận kề, bạn cần thay “?” trong Hình 3 bằng “j” để in ra giá trị của ma trận kề.
# Ghép với Hình 2
for i in range(n):
for j in range(n):
print(g[i][j], end=" ")
print()
c) Trong Hình 4 được thay bằng đại lượng thích hợp sau, sau đó ghép với đoạn chương trình ở Hình 2 để hiến thị bậc ra của các đinh 0, 1,..., n - 1.
Để tính bậc ra, “?” trong Hình 4 cần được thay bằng “1” để cập nhật biến đếm cnt khi có cạnh nối từ đỉnh i đến j.
# Ghép với Hình 2
for i in range(n):
cnt = 0
for j in range(n):
if g[i][j] == 1:
cnt += 1
print(i, ":", cnt)
d) Thử nghiệm với dữ liệu đã tạo ở yêu cầu a) trong bài toán Giao hữu bóng đá. Sử dụng dữ liệu bạn đã tạo từ yêu cầu a), bạn có thể thử nghiệm chương trình đã ghép để kiểm tra kết quả của ma trận kề và bậc ra của các đỉnh.