排序算法pascal2.车厢重组(carry.pas)【问题描述】在一个就是火车站旁有一座桥,其桥面可以绕河中心的桥墩水

排序算法pascal
2.车厢重组(carry.pas)
【问题描述】
在一个就是火车站旁有一座桥,其桥面可以绕河中心的桥墩水平旋转.该车站职工发现桥的长度最多只能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序.于是他就负责用这座桥将进站的车厢按车厢号从小到大排列.在他退休后,火车站决定将这一工作自动化,其中一项重要的工作是编一个程序,输入初始的车厢顺序,计算最少用多少步就能将车厢排好序.
某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金.期末,每个学生都有3门课的成绩:先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学 排在前面,这样,每个学生的排序是唯一确定的.
任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前五名名学生的学号和总分.注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序.例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分) 是:
7 279
5 279
这两行数据的含义是:总分最高的两个同学的学号依次是7号、5号.这两名同学的总分都是 279 (总分等于输入的语文、数学、英语三科成绩之和) ,但学号为7的学生语文成绩更高一些.如果你的前两名的输出数据是:
5 279
7 279
否则按输出错误处理,不能得分.
风云cool 1年前 已收到1个回答 举报

pigeon_1982 花朵

共回答了20个问题采纳率:80% 举报

这题我前不久做过,用冒泡排序就能解决了,不信你编一个试一试.
思想,就是按照先序或者后序,将最小的放在最左边,不用管途中的任何情况,然后就移动次小的,再移动更小的,直到将倒数第二个移动到位后,最后一个也移好了.
所以,可以将这种思想看成是冒泡排序的一个变形把.
代码很简单,就不给了,如果你实在编起困难,再说把,我觉得思想比代码更重要,代码能力可以做题实现,但是思想必须自己体会了.
奖学金
program a1(input,output);
var
n,x,y,z,i,j:integer;
a:array[1..300,1..3] of integer;
procedure swap(var a,b:integer); {交换过程}
var
s:integer;
begin
s:=a;
a:=b;
b:=s;
end;
begin
readln(n);
for i:=1 to n do
begin
readln(x,y,z);
a[i,1]:=i;
a[i,2]:=x;
a[i,3]:=x+y+z;
end;
for i:=1 to n-1 do {选择排序}
for j:=i+1 to n do
if (a[i,3]

1年前

7
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.595 s. - webmaster@yulucn.com