Files
4laba/task1.py
2026-04-01 10:19:45 +03:00

90 lines
2.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import random as r
def search_matrix(matrix, K):
"""
Поиск числа K в матрице
"""
if not matrix or not matrix[0]:
return False, 0
N = len(matrix)
M = len(matrix[0])
row = 0
col = M - 1
steps = 0
while row < N and col >= 0:
steps += 1
current = matrix[row][col]
if current == K:
return True, steps
elif current > K:
col -= 1
else:
row += 1
return False, steps
def generate_matrix(N, M):
"""
Генерирует матрицу N x M со случайными числами
"""
matrix = [[0] * M for g in range(N)]
matrix[0][0] = r.randint(1, 10)
for j in range(1, M):
matrix[0][j] = matrix[0][j-1] + r.randint(1, 8)
for i in range(1, N):
for j in range(M):
min_val = matrix[i-1][j]
if j > 0:
min_val = max(min_val, matrix[i][j-1])
matrix[i][j] = min_val + r.randint(1, 8)
return matrix
def print_matrix(matrix):
"""Красивый вывод матрицы"""
for row in matrix:
print("\t".join(map(str, row)))
def main():
try:
N = int(input("Введите количество строк N: "))
M = int(input("Введите количество столбцов M: "))
except ValueError:
print("Ошибка: введите целые числа")
return
if N <= 0 or M <= 0:
print("Размеры матрицы должны быть положительными")
return
matrix = generate_matrix(N, M)
print("\nСгенерированная матрица:")
print_matrix(matrix)
try:
K = int(input("\nВведите число для поиска: "))
except ValueError:
print("Ошибка: введите целое число")
return
found, steps = search_matrix(matrix, K)
if found:
print(f"Число {K} найдено! Количество шагов: {steps}")
else:
print(f"Число {K} не найдено. Количество шагов: {steps}")
if __name__ == "__main__":
main()