矩阵相乘
问题描述:给定一个N阶矩阵A,输出A×A
例如:
A =
1 2
3 4
A×A为
7 10
15 22
输入格式:第一行是一个正整数N(1<=N<=30),表示矩阵A的阶数,接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值
输出格式:输出共N行,每行N个整数,表示A×A所对应的矩阵。相邻的数之间用一个空格隔开
样例输入:
2 2
1 2
3 4
样例输出:
7 10
15 22
代码为:
n = int(input())
ju1 = [list(map(int,input().split(' '))) for i in range(n)]
def get_juh(ju1, h):
list1 = []
for i in range(n):
list1.append(ju1[h][i])
return list1
def get_jul(ju1, l):
list2 = []
for i in range(n):
list2.append(ju1[i][l])
return list2
def get_new_ju(ju1, n):
list3 = []
num = 0
for k in range(n):
for i in range(n):
for j in range(n):
num = num + get_juh(ju1,k)[j]*get_jul(ju1,i)[j]
list3.append(num)
num = 0
for m in range(len(list3)):
print(list3[m], end=' ')
if (n % (m+1) == 0 or (m+1)%n == 0) and m != 0:
print()
get_new_ju(ju1, n)
下面是运行结果:
回形取数
问题描述:回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。
输入格式:输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。
输出格式:输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。
样例输入:
3 3
1 2 3
4 5 6
7 8 9
样例输出:1 4 7 8 9 6 3 2 5
样例输入:
3 2
1 2
3 4
5 6
样例输出:1 3 5 6 4 2
这个问题博主分了两个步骤实现的,分别在两个函数中,下面是详细代码:
l = input().split(' ')
m = int(l[0])
n = int(l[1])
ar = [list(map(int, input().split(' ')))for i in range(m)]
arr = []
def get1(m, n, ar, arr):
for j in range(n):
if j == 0:
for i in range(m):
print(ar[i][j], end=' ')
arr.append(ar[i][j])
else:
print(ar[m - 1][j], end=' ')
arr.append(ar[m - 1][j])
def get2(m, n, ar, arr):
for j in range(n - 1, -1, -1):
if j == n - 1:
for i in range(m - 2, -1, -1):
print(ar[i][j], end=' ')
arr.append(ar[i][j])
elif j == n - 2 and n - 2 > 0:
print(ar[0][j], end=' ')
arr.append(ar[0][j])
else:
for k in range(1, m):
if ar[k][j + 1] not in arr:
print(ar[k][j + 1],end=' ')
arr.append(ar[k][j + 1])
else:
continue
get1(m, n, ar, arr)
get2(m, n, ar, arr)
下面是运行结果: