题目:
要求:
代码:
#滑雪
#输入数据建模
import copy
r,c=map(int,input().split())
list0=[]# 二维
for i in range(r):
list00=input().split()
for j in range(c):
list00[j]=int(list00[j])
list0.append(list00)
list000=copy.deepcopy(list0)
#排序
list1=[]#二维
for i in range(r*c):
list11=[]#每行的最小值 一维
for j in range(r):
min0=min(list000[j])
list11.append(min0)
min00=min(list11)
index0=list11.index(min00)#最小值横坐标
index1=list000[index0].index(min00)#最小值纵坐标
list1.append([index0,index1])
list000[index0][index1]=10000
#动态规划
list2=[[1 for i in range(c)] for j in range(r)]
for i in list1:
if i[1]+1<c :
if list0[i[0]][i[1]]<list0[i[0]][i[1]+1]:
list2[i[0]][i[1]+1]=max(list2[i[0]][i[1]+1],list2[i[0]][i[1]]+1)
if i[1]-1>-1:
if list0[i[0]][i[1]]<list0[i[0]][i[1]-1]:
list2[i[0]][i[1]-1]=max(list2[i[0]][i[1]-1],list2[i[0]][i[1]]+1)
if i[0]+1<r:
if list0[i[0]][i[1]]<list0[i[0]+1][i[1]]:
list2[i[0]+1][i[1]]=max(list2[i[0]+1][i[1]],list2[i[0]][i[1]]+1)
if i[0]-1>-1:
if list0[i[0]][i[1]]<list0[i[0]-1][i[1]]:
list2[i[0]-1][i[1]]=max(list2[i[0]-1][i[1]],list2[i[0]][i[1]]+1)
#结果
list3=[]
for i in range(r):
list3.append(max(list2[i]))
print(max(list3))