解题思路:
注意事项:
参考代码:
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 人评分
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:768 |
C二级辅导-求偶数和 (C语言代码)浏览:397 |
C二级辅导-计负均正 (C++代码)浏览:898 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1020 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:716 |
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:570 |
C语言训练-角谷猜想 (C语言代码)浏览:1705 |
淘淘的名单 (C语言代码)答案错误???浏览:595 |
大神老白 (C语言代码)浏览:645 |
【明明的随机数】 (C语言代码)浏览:787 |