1. 程式人生 > >Python “最短”挑戰(12.24)

Python “最短”挑戰(12.24)

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))