python解法 P1781 宇宙总统&&P2676 [USACO07DEC] Bookshelf B&&P1116 车厢重组&&P1152 欢乐的跳&&P5143 攀爬者

P1781 宇宙总统

#直接找最大值,再通过列表的index方法找下标+1即可得到编号
n=int(input())
arr=[]
for i in range(n):
    x=int(input())
    arr.append(x)
max_s=max(arr)
index=arr.index(max_s)
print(index+1) #编号从1开始
print(max_s)

P2676 [USACO07DEC] Bookshelf

n,b=map(int,input().split())
arr=[]
sum,count=0,0
for i in range(n):
    x=int(input())
    arr.append(x)
# arr_new=sorted(arr)
#降序排牛的身高,累加求和>=b时,即可得到最少牛数
for j in sorted(arr,reverse=True):
    sum+=j
    count+=1
    if sum>=b:
        break
print(count)

P1116 车厢重组

#冒泡排序完整写一遍就行了
def swap(i,j):
    return j,i
n=int(input())
arr=[]
tool_arr=[]
#这个输入是真的nt,既要允许单行输入,也要允许多行输入
for i in range(n):
    tool_arr=list(map(int,input().split()))
    arr.extend(tool_arr)
    if len(arr)==n:
        break
count=0
flag=0
for i in range(n-1):
    for j in range(n-1-i):
        if arr[j]>arr[j+1]:
    #交换函数有返回值要接受,不接受的话冒泡排序压根就没进行
            arr[j],arr[j+1]=swap(arr[j],arr[j+1]) 
            count+=1
            flag=1
    if flag==0:
        break
    else:
        flag=0
# print(arr)
print(count)

P1152 欢乐的跳


arr=list(map(int,input().split()))
n=arr[0]
jarr=[i for i in range(1,n)] #[1,n−1] 之间的所有整数
# print(jarr)
sarr=[] #原列表相邻元素绝对值之差
flag=0
for i in range(1,n):
    k=abs(arr[i+1]-arr[i]) #得绝对值之差
    sarr.append(k) 
# print(sarr)
#本来这里要用遍历一个一个查找判断的,但是python中in可以直接实现这一功能
#若[1,n−1] 之间的所有整数没有包括在原列表相邻元素绝对值之差构成的列表中就退出循环
for i in jarr:
    if i not in sarr:
        flag=1
        break
if flag==0:
    print('Jolly')
else:
    print('Not jolly')

P5143 攀爬者

import math
n=int(input())
arr=[]
for i in range(n):
    x,y,z=map(int,input().split())
    arr.append([x,y,z]) # 把x,y,z坐标存到多维列表中
# print(arr)
arr.sort(key=lambda x:x[2]) #多维列表排序,按照z轴坐标从小到大排序
# print(arr)
sum=0 #坐标差的平方和
s=0 #欧几里得距离
for i in range(n-1):
    for j in range(len(arr[i])):
        sum+=pow(arr[i+1][j]-arr[i][j],2)
    s+=math.sqrt(sum)
    sum=0 #重置0
print(f'{s:.3f}') #保留三位小数

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值