解题思路:
注意事项:
参考代码:
def move(row: int): # 移动函数,通过pop弹出最后一个元素,和insert插入到最前面实现
key = list1[row].pop()
list1[row].insert(0, key)
def column_sum(column: int): # 求和函数,求第column列所有元素之和
Column_Sum = 0
for row in range(n):
Column_Sum += list1[row][column]
return Column_Sum
def search(): # 查找最当前矩阵的列最大值
global result # 调用全局变量result必须先声明
list2 = []
for last_column in range(n):
list2.append(column_sum(last_column)) # 记录每一列的和到list2中以便求最大值
result_fun = max(list2)
if result > result_fun:
result = result_fun
def GetMin(N): # 递归函数,N代表移动第几行,当N==-1时,没有行可以移动就求值
if N == -1:
search()
else: # 如果N不为-1就移动前一行
GetMin(N - 1) # 先不移动当前行,减少移动次数
for move_times in range(n - 1): # 每一行最多移动n-1次,算上上面那行代码一共n个结果
move(N)
GetMin(N - 1)
n = int(input())
while n != -1:
result = 99999 # 找最小值,先赋一个很大的值
list1 = [[] for i in range(n)]
for i in range(n):
list1[i] = list(map(int, input().strip().split()))
GetMin(n - 2) # 最后一行不需要移动
print(result)
n = int(input())
0.0分
2 人评分