21计科程一帆


私信TA

用户名:uq_88617846948

访问量:2901

签 名:

搞哥毛哥在上,俺寻思俺是一个最大最强的技术小子

等  级
排  名 1154
经  验 3030
参赛次数 2
文章发表 52
年  龄 19
在职情况 学生
学  校 石河子大学
专  业 计算机科学与技术

  自我简介:

憨憨一个,欢迎大佬指正

解题思路:先接受数据,将对应数量的纪念品价值进行从小到大排序,再利用双指针法进行分组计数,左右指针指向纪念品价值之和不大于上限时,左指针右移,右指针左移,否则只移动右指针将右边的纪念品单独分为一组,每次记录分组数目,最后输出即为结果

注意事项:注意要先正向排序,不要忘了这个

参考代码:

shangxian=int(input())
jianshu=int(input())
congxiaodaoda=[]
for i in range(jianshu):
   a=int(input())
   congxiaodaoda.append(a)
congxiaodaoda.sort(reverse=False)#先从小到大排一遍
fenzu=0
left=0
right=len(congxiaodaoda)-1
while left<=right:#注意是小于等于
   if congxiaodaoda[left]+congxiaodaoda[right]<=shangxian:
       left+=1
       right-=1
   else:
       right-=1
   fenzu+=1
print(fenzu)

 

0.0分

2 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区