Python “最短”挑戰(12.24)
阿新 • • 發佈:2018-12-30
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))