Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm ra các ô chứa giá trị lớn nhất trong ma trận bằng Python

Giả sử, có một ma trận n x n được khởi tạo với các số 0. Bây giờ, một danh sách được đưa ra và nó chứa một số cặp chứa một hàng và một vị trí cột cụ thể. Đối với mỗi mục i trong danh sách, nội dung của các ô tăng 1 trong đó số hàng và số cột nhỏ hơn giá trị hàng và giá trị cột của mục i trong danh sách. Sau khi tất cả các phần tử của danh sách đã được duyệt qua, chúng ta phải tìm ra số ô trong ma trận có chứa giá trị lớn nhất. (chỉ mục hàng và cột bắt đầu từ 0)

Vì vậy, nếu đầu vào giống như input_list =[[3, 5], [4, 6], [5, 3]], thì đầu ra sẽ là 9. Giả sử, nó là ma trận 5 x 6. Lúc đầu, các giá trị trong ma trận là

0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0

Sau khi phần tử đầu tiên của danh sách được duyệt qua, nó sẽ trở thành -

1 1 1 1 1 0
1 1 1 1 1 0
1 1 1 1 1 0
0 0 0 0 0 0
0 0 0 0 0 0

Sau khi phần tử thứ hai của danh sách được duyệt qua, nó sẽ trở thành -

2 2 2 2 2 1
2 2 2 2 2 1
2 2 2 2 2 1
1 1 1 1 1 1
0 0 0 0 0 0

Sau khi phần tử thứ ba của danh sách được duyệt qua, nó sẽ trở thành -

3 3 3 2 2 1
3 3 3 2 2 1
3 3 3 2 2 1
2 2 2 1 1 1
1 1 1 0 0 0

Giá trị lớn nhất trong ma trận là 3 và có 9 ô chứa giá trị.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau

  • xpos:=0
  • ypos:=0
  • đối với mỗi mục trong input_list, hãy thực hiện
    • nếu xpos giống 0, thì
      • xpos:=item [0]
      • ypos:=item [1]
    • nếu không,
      • xpos:=tối thiểu là (xpos, item [0])
      • ypos:=tối thiểu là (ypos, item [1])
  • return (xpos * ypos)

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

def solve(input_list):
   xpos = 0
   ypos = 0
   for item in input_list:
      if xpos == 0:
         xpos = item[0]
         ypos = item[1]
      else:
         xpos = min(xpos,item[0])
         ypos = min(ypos,item[1])
   return (xpos * ypos)

print(solve([[3, 5], [4, 6], [5, 3]]))

Đầu vào

[[3, 5], [4, 6], [5, 3]]

Đầu ra

9