解题思路:首先看输入格式,是不限制输入次数,那就while接收,不放心就再加个try-except,这一题空间限制很小,那干脆多占点空间换时间了,接收每一组数据后化为整型,然后截去第一位计数用的,留下有用的数据,同时加个if判定遇到输入0时停下来;给截取后的列表b做一个绝对值版本,起名为c,再用空列表d进行对比排序后的结果存储,每次取得c中最大的数值下标,将其对应的b中的原数值(没取绝对值的版本)放到d中存储,然后将该最大值在c列表中置0,以方便下一次找最大的绝对值,遍历完列表c就完成了比较和排序。


注意事项:该种方法绕过了sort(),思路更清晰一点,sort也能用,不过得再写个判断函数处理最后的存储结果,写着麻烦一点。


参考代码:

while(True):
   a=input()
   if a!="0":
       a=a.split()
       a = [int(i) for i in a]
       b = a[1:]
       c=[abs(i) for i in b]
       d=[]
       for i in range(len(c)):
           d.append(b[c.index(max(c))])
           c[c.index(max(c))]=0
       for i in d:
           print(i, end=" ")
       print()
   else:
       break

点赞(1)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论