解题思路:首先看输入格式,是不限制输入次数,那就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
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复