Trang chủ Tin Học Lớp 10 ai nói được thuật toán ra tặng luôn 40đ. nếu...

ai nói được thuật toán ra tặng luôn 40đ. nếu viết code là python hay pascal nha.Bài 3: Giỏi được nhiều. (7 điểm) Lão nông dân cho chàng rể một phần quà tặng là

Câu hỏi :

ai nói được thuật toán ra tặng luôn 40đ. nếu viết code là python hay pascal nha.

image

Lời giải 1 :

Đây chỉ là một ý tưởng và nó có thể không thành công. :V

==============================

Python 3.

Cần chuẩn bị thư viện Shapely. Nếu chưa có thì bạn dùng lệnh sau để tải về:

pip install shapely

==============================

Bước 1: Đọc dữ liệu trong file GOOD.INP:

           + Đọc theo thứ tự x trước y sau lưu vào hai dictionary X và Y

           +Ví dụ: X = {'tg1':[0, 0, 1, 1, 0.5]} và Y = {'tg1':[0, 1, 1, 0, 0.5]}

Bước 2: Tìm tam giác độc lập.

           + tg1 = Polygon([A, B, C])
               tg2 = Polygon([A, B, C])
               kt = tg1.intersects(tg2)

                 Nếu 2 tam giác giao nhau thì kt sẽ là true và không giao sẽ là false.

           + Nếu giao nhau thì tìm cạnh giao nhau, nếu không có cạnh giao nhau thì hai tam giác này lồng vào nhau, thì hai tam giác đó là độc lập.

Bước 3: Tính diện tích S = 0.5*abs((xB-xA)*(yC-yA)-(xC-xA)*(yB-yA))

Bước 4: Gán giá trị của S cho Max nếu Max < S. Sau đó quay lại bước hai cho đên khi hết tam giác độc lập.

Bước 5: Tìm tam giác giao nhau.

           + tg1 = Polygon([A, B, C])
               tg2 = Polygon([A, B, C])
               kt = tg1.intersects(tg2)

                 Nếu 2 tam giác giao nhau thì kt sẽ là true và không giao sẽ là false.

           + Nếu giao nhau thì tìm cạnh giao nhau, nếu không có cạnh giao nhau thì hai tam giác này lồng vào nhau, thì  thì hai tam giác này không giao nhau.

Bước 6: Xác định tọa độ giao điểm của cạnh cắt nhau.

           +d1 = LineString([(x1, y1), (x2, y2)])
             d2 = LineString([(x3, y3), (x4, y4)])
             p = d1.intersection(d2)
             p_giaodiem = p.x, p.y

Bước 7: Tính diện tích đa giác đó.

           +def polygonArea(X, Y, n):  #polygon: đa giác, polygonArea: diện tích đa giác.
                  area = 0.0  
                  j = n - 1
                  for i in range(0,n):
                  area += (X[j] + X[i]) * (Y[j] - Y[i])
                  j = i   
                  return abs(area / 2.0)

            P/S: Phần code trên được mình lấy từ trang geeksforgeeks, do mình chưa viết đuọc đoạn code tính đa giác.

Bước 8: Gán giá trị của S cho Max nếu Max < S. Sau đó quay lại bước 5 cho đên khi hết tam giác giao nhao.

Bước 9: In Max ra file GOOD.OUT.

Bước 10: Đi ngủ. :))

Thảo luận

-- Cảm ơn
-- tặng cho bạn luôn mà còn sài được không thì không bk nha:))
-- Hồi sáng dạo hết mấy cái diễn đàn nước ngoài, đọc mệt luôn
-- tặng cho bạn luôn mà còn sài được không thì không bk nha:)) >um thanh kìu
-- 😆😅😅😅 thấy bạn viết vậy mình biết bỏ sức nhiều lắm. Mình cũng giúp vậy nhưng người ta không tick mà ngược lại bị xóa nữa
-- oki oki
-- Nhiều người hỏi sai ở đâu cũng chả thèm trả lời. T.T
-- đúng rồi bạn. Nhất trong câu hỏi môn tin á:((

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng (ảo). Với cách hiểu hiện nay, tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 10

Lớp 10 - Năm thứ nhất ở cấp trung học phổ thông, năm đầu tiên nên có nhiều bạn bè mới đến từ những nơi xa hơn vì ngôi trường mới lại mỗi lúc lại xa nhà mình hơn. Được biết bên ngoài kia là một thế giới mới to và nhiều điều thú vị, một trang mới đang chò đợi chúng ta.

Nguồn : ADMIN :))

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK