帮忙pascal题,谢了!好了追加100分

来源:百度知道 编辑:UC知道 时间:2024/06/08 08:18:06
2、排行榜
源程序名 LIST.??? (PAS,C,CPP)
可执行文件名 LIST.EXE
输入文件名 LIST.IN
输出文件名 LIST.OUT
小迈克尔住在一个小镇上,他喜欢看每周日下午发布的音乐电视评比。它
每周都根据选票介绍相同的歌曲,列出这些歌曲的流行排行榜。
有一个星期日迈克尔和他的朋友在一起玩得太久了以致于未能看到新的流行榜。他非常失望,但是不久他就发现下周至少可以部分地建立出流行榜。除了每首歌曲的位置,排行榜还根据这些歌曲上周的排行列出了它们排行变动的信息,更精确地说,从这周起,不管那首歌是继续排在原位,还是排名上升或排名下降,都会给出一点说明。
编写程序,根据给定的流行榜帮助迈克尔推断出上周可能的排行榜。
输入
输入文件的第一行是一个整数N,1≤N≤100,表示排行榜上歌曲的总数。
接下来的N块列出了排行信息。每块有两行组成,第i块第一行是第i首歌曲的名称,歌名包括最多不超过100个英文大写字母,第二行包含下列三个单词中的一个:UP(歌曲在排行榜上的位置上升),DOWN(歌曲在排行榜上的位置下滑)或SAME(排行不变),表示与上周排行榜相比,排行榜所发生的变动。
输出
输出文件应该用N行输出一个上周可能的排行榜。
每一行包含一首歌名,即第i行包含排行榜上第i首歌的歌名。
注意:解不必是唯一的,但对于每一个测试数据都至少有一个解。

样例
LIST.IN
5
HIGHHOPES
UP
LOWFEELINGS
UP
UPANDDOWN
DOWN
IAMSTILLSTANDING
DOWN
FOOLINGAROUND
DOWN

LIST.OUT
UPANDDOWN
IAMSTILLSTANDING
FOOLINGAROUND
HGHHOPES
LOWFEELINGS
3、杂务
源程序名 CHORE.???(PAS,C,CPP)

(这两道题都很水啊,另外,为了让程序有层次感,我将每行前面的空格都换成下划线,以防百~度抽空格)
1.这道题可以用Θ(N)的时间完成(那n≤100)
same的不变,down的按出现先后顺序排在前面,up的按出现先后顺序排在后面,保证正确。程序:
var
__a,b:array[1..100] of string;
__c:array[1..100] of longint;
__i,j,k,l,n:longint; s:string;
begin
__assign(input,'list.in'); reset(input);
__assign(output,'list.out'); rewrite(output);
__readln(n);
__for i:=1 to n do begin
____readln(a[i]); readln(s);
____if s='UP' then
______c[i]:=1
____else if s='DOWN' then
______c[i]:=2
____else begin
______c[i]:=3; b[i]:=a[i];
____end;
__end;
__j:=0;
__s:='';
__for i:=1 to n do
____if c[i]=2 then begin
______repeat
________inc(j);
______until b[j]=s;
______b[j]:=a[i];
____end;
__j:=n+1;
__for i:=n downto 1 do
____if c[i]=1 then begin
______repeat
________dec(j);
______until b[j]=s;
______b[j]:=a[i];