Tính số chuyến thuyền

Mỗi chiếc thuyền sẽ tốn 20 phút đi một chiều từ bến A sang bến B. Cho thời điểm xuất bến của mỗi chiếc thuyền, hãy tìm thời điểm có nhiều chiếc thuyền trên tuyến này nhất.

Mảng được cho sẵn: hour[]minute[] đảm bảo thời gian không giảm và chia hết cho 5.

(đối chiếu)


đây là đề bài

n = int(input())
hour = []
minute = []
t = 0
for i in range(0,n):
    hour.append(int(input()))
    minute.append(int(input()))
for i in range(0,n-1):
 for j in range(i+1,n):
  if hour[i] == hour[j]:
   if abs(minute[i]-minute[j]) <=20:
    t+=1
  elif abs(hour[i] - hour[j]) == 1:
   if minute[i] >= 40:
    minute[i] = 60 - minute[i]
    if minute[i] + minute[j] <= 20:
     t += 1
   else:
    continue
  else:
   continue
if t <= 1:
 t += 1
print(t)

còn đây là code của em. Em đã thử nhiều trường hợp đúng rồi nhưng vẫn bị báo failed test case

This topic was automatically opened after 64 minutes.

Nếu bạn vẫn có thể truy cập vào đề bài thì vui lòng chép nội dung thay vì chụp hình.


Đề bài có đoạn:

Tức là đã có sẵn dữ liệu rồi!?
Liệu bạn có cần dùng input() nữa không?

3 Likes

Bạn đang so sánh giữa 2 thuyền i và thuyền j đúng không nè? Nếu đúng thì cái t của bạn là tổng các cặp thuyền có thời gian ít hơn 20 phút, không đúng yêu cầu đề bài.

Cách sửa là đem t vào trong for của i, khi đó t chỉ đếm các thuyền j (j > i) có thời gian cách ít hơn hoặc bằng 20 phút. Trong các giá trị t thu được, chỉ lấy t lớn nhất.

Thêm nữa, đừng nên xử lí thời gian trên 2 nơi: hour và minute. Bạn nên tạo 1 list mới, như times chẳng hạn, lưu thông tin thời điểm theo công thức: hour * 60 + minute. Lúc này chỉ cần xử lí trên times thôi, không mất công xài if else trên 2 cái hour và minute.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?