Description
给定一个由0和1组成的矩阵。只允许交换相邻的两行,要把矩阵化成下三角矩阵(主对角线上方全是0),最少需要交换几次?假设输入的矩阵总能保证能化成下三角矩阵。
Input
若干行,第一行一个数n(1<=n<=8),下面n行各有n个数字(0或1)。
Output
最少需要交换次数。
其余要求同首题。
Sample Input
4
1110
1100
1100
1000
Sample Output
4
Reference code
n=int(input())
m=[]
for i in range(n):
m.append([int(i) for i in input()])
def main(n,m):
ans=0
a=[-1 for i in range(n)]
for i in range(n):
for j in range(n):
if m[i][j]==1:
a[i]=j
for i in range(n):
pos=-1
for j in range(i,n):
if a[j]<=i:
pos=j
break
for j in range(pos,i,-1):
a[j],a[j-1]=a[j-1],a[j]
ans+=1
return ans
print(main(n,m))