Вопрос Вопрос по python!

Регистрация
29 Дек 2013
Сообщения
81
Репутация
0
Спасибо
0
Монет
0
Задача:

Проверьте, является ли двумерный массив симметричным относительно главной диагонали. Главная диагональ — та, которая идёт из левого верхнего угла двумерного массива в правый нижний.



Входные данные



Программа получает на вход число 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[j])

if i > j:

k.append(matrix[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[j] != matrix[j]:
symmetric = False
break
if not symmetric:
break

if symmetric:
print('Yes')
else:
print('No') Этот код сначала считывает входные данные и затем проверяет симметричность матрицы относительно главной диагонали, сравнивая элементы в верхнем треугольнике матрицы (включая главную диагональ). Если хотя бы одна пара элементов не соответствует симметрии, программа выводит 'No'. В противном случае выводится 'Yes'.
 
Тебе ж вчера уже отвечали. У меня такой вариант решения. Без ботов, чисто самостоятельно ==> 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[:c]
c += 1
return res

def f2(x):
res = []
c = 1
for i in range(len(x)):
res += x[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[j] != matrix[j]:
is_symmetric = False
break

if is_symmetric:
print('Yes')
else:
print('No')
 
Назад
Сверху