Вопрос по Python!
Задача:
Проверьте, является ли двумерный массив симметричным относительно главной диагонали. Главная диагональ — та, которая идёт из левого верхнего угла двумерного массива в правый нижний.
Входные данные
Программа получает на вход число n<100, являющееся числом строк и столбцов в массиве. Далее во входном потоке идет n строк по n чисел, являющихся элементами массива.
Выходные данные
Программа должна выводить слово Yes для симметричного массива и слово No для несимметричного.
Моё решение:
matrix = []
p = []
k = []
n = int(input())
for i in range(n):
matrix.append(list(map(int, input().split())))
for i in range(n):
for j in range(n):
if i < j:
p.append(matrix[i][j])
if i > j:
k.append(matrix[i][j])
if k == p:
print('Yes')
else:
print('No')
Короче моё решение не проходит последний тест и я не понимаю почему
GPT
Проблема в вашем коде заключается в том, что он не проверяет симметричность относительно главной диагонали правильно. Подход, который вы используете с добавлением элементов в списки p и k, не учитывает симметричность массива.
Вместо этого вы можете сравнивать элементы массива относительно главной диагонали без создания дополнительных списков. Попробуйте следующее решение:
n = int(input())
matrix = []
for i in range(n):
matrix.append(list(map(int, input().split())))
# Проверка симметричности относительно главной диагонали
symmetric = True
for i in range(n):
for j in range(i, n): # Проходим только по верхнему треугольнику матрицы (включая главную диагональ)
if matrix[i][j] != matrix[j][i]:
symmetric = False
break
if not symmetric:
break
if symmetric:
print('Yes')
else:
print('No')
Этот код сначала считывает входные данные и затем проверяет симметричность матрицы относительно главной диагонали, сравнивая элементы в верхнем треугольнике матрицы (включая главную диагональ). Если хотя бы одна пара элементов не соответствует симметрии, программа выводит 'No'. В противном случае выводится 'Yes'.
5
0 1 2 3 4
1 0 5 6 7
2 5 0 8 9
3 6 8 0 10
4 7 9 10 0
Получаем списки:
1 2 3 4 5 6 7 8 9 10
1 2 5 3 6 8 4 7 9 10
Таким образом, ваше решение и один из ответов неверные
Тебе ж вчера уже отвечали. У меня такой вариант решения. Без ботов, чисто самостоятельно ==>
m = [ [1,2,3],
[3,4,5],
[6,7,8]]
m2 = [[1,0,0],
[0,1,0],
[0,0,1]]
def f(x):
res = []
c = 0
for i in range(len(x)):
res += x[i][:c]
c += 1
return res
def f2(x):
res = []
c = 1
for i in range(len(x)):
res += x[i][c:]
c += 1
return res
print(f(m) == f2(m))
print(f(m2) == f2(m2))
n = int(input())
matrix = []
for i in range(n):
row = list(map(int, input().split()))
matrix.append(row)
# Проверяем симметрию относительно главной диагонали
is_symmetric = True
for i in range(n):
for j in range(i + 1, n):
if matrix[i][j] != matrix[j][i]:
is_symmetric = False
break
if is_symmetric:
print('Yes')
else:
print('No')