花生挑选python.

花生挑选python.

鲁宾逊教师有一只宠物猴,名叫多多。这天,她们两个正沿着乡村巷子漫步,遽然创造路边的公布牌上贴着一张小小的纸条:“欢送免费品味我种的花生!——熊字”。

鲁宾逊教师和多多都很欣喜,由于花生恰是她们的最爱。在公布牌背地,路边真的有一块花生田,花生植株一律地陈设成矩形网格(如图1)。有体味的多多一眼就能看出,每棵花生植株下的花生有几何。为了演练多多的算术,鲁宾逊教师说:“你先找到花生最多的植株,去采摘它的花生;而后再找到剩下的植株里花生最多的,去采摘它的花生;依该类推,然而你确定要在我控制的功夫内回到路边。”

咱们假设多多在每个单元功夫内,不妨做下列四件工作中的一件:

从路边跳到最邻近路边(即第一条龙)的某棵花生植株;

从一棵植株跳到前后安排与之相邻的另一棵植株;

采摘一棵植株下的花生;

从最邻近路边(即第一条龙)的某棵花生植株跳回路边。

此刻给定一块花生田的巨细和花生的散布,指导在控制功夫内,多多最多不妨采到几何个花生?提防大概惟有局部植株底下长有花生,假如那些植株下的花生个数各不沟通。

比方在图2所示的花生田里,惟有坐落(2, 5), (3, 7), (4, 2), (5, 4)的植株下长有花生,个数辨别为13, 7, 15, 9。沿着图示的道路,多多在21个单元功夫内,最多不妨采到37个花生。

输出 :

输出文献peanuts.in的第一条龙囊括三个平头,M, N和K,用空格隔绝;表白花生田的巨细为M * N(1 <= M, N <= 20),多多采花生的控制功夫为K(0 <= K <= 1000)个单元功夫。接下来的M行,每行囊括N个非负平头,也用空格隔绝;第i + 1行的第j个平头Pij(0 <= Pij <= 500)表白花生田里植株(i, j)下花生的数量,0表白该植株下没有花生。

输入 :

输入文献peanuts.out囊括一条龙,这一条龙只包括一个平头,即在控制功夫内,多多最多不妨采到花生的个数。

python代码:

m,n,k=map(int,input().split())

lis1=[]

while m>0:

m-=1

lis1.append(list(map(int,input().split())))

# print(lis1)

l1=len(lis1)

lis2=[]

# 获得花生植株坐标

for i in range(l1):

for j in range(n):

if lis1[i][j]>0:

lis2.append([i+1,j+1,lis1[i][j]])

# print(lis2)

# 按照花生数目举行排序 冒泡法

l2=len(lis2)

for i in range(l2):

for j in range(l2-i-1):

if lis2[j][2]<lis2[j+1][2]:

lis2[j],lis2[j+1]=lis2[j+1],lis2[j]

# print(lis2)

# 采摘的数目

def caizhai(lis):

lis3=[]

l3=len(lis)

if l3>0: #确定能否为空

for i in range(l3):

if i==0:

lis3.append(lis[i][0])

else:

lis3.append(abs(lis[i][0]-lis[i-1][0])+abs(lis[i][1]-lis[i-1][1]))

return sum(lis3)+l3+lis[-1][0]

else:

return 0

# 时艰采摘

while caizhai(lis2)>k:

lis2.pop()

# print(lis2)

# 输入花生数目

lis4=[]

for i in range(len(lis2)):

lis4.append(lis2[i][2])

print(sum(lis4))

分享到 :
相关推荐

Leave a Reply

Your email address will not be published. Required fields are marked *