主题:Pascal难题
QBfire
[专家分:50] 发布于 2009-07-20 10:29:00
1.找最长良序字符串
【问题描述】我们将“abc”或“aceg”等类似的字串称为良序字串(因为它们是按ascii码排列的),而像“acb”或“accd”或“agcd”则不可称为良序字串。
编写程序,将输入的一串字符中的最长良序字串找出来,并输出其长度。
【输 入】:文件读入一串字符(长度≤30),以#结束。
【输 出】:输出到屏幕。一个最长良序字串的长度。
【样 例】:
输入 acbcdecdeabc#
输出 4
2.随机产生20个100以内的数,输出,按从小到大顺序排序,输出到文件s.out中。
3.给出一个数字三角形,求一条从顶到下的路径使和最大。对于每一点来说可以向下和向右走。
输入文件:sjx.in
第1行为三角形的行数n,以下n行为每行的数据。
输出文件:sjx.out。
仅一行,为最大值。
样例 sjx.in
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
sjx.out
31
回复列表 (共4个回复)
板凳
QBfire [专家分:50] 发布于 2009-07-20 10:40:00
1.找最长良序字符串
【问题描述】我们将“abc”或“aceg”等类似的字串称为良序字串(因为它们是按ascii码排列的),而像“acb”或“accd”或“agcd”则不可称为良序字串。
编写程序,将输入的一串字符中的最长良序字串找出来,并输出其长度。
【输 入】:文件读入一串字符(长度≤30),以#结束。
【输 出】:输出到屏幕。一个最长良序字串的长度。
【样 例】:
输入 acbcdecdeabc#
输出 4
var b,c:char;
t,max:integer;
begin
read(c);t:=1;max:=0;
repeat
b:=c;
read(c); if c<>'#' then
if b<c then t:=t+1
else begin if t>max then max:=t;t:=1;end;
until c='#';
readln;
writeln(max);
readln;
end.
2.随机产生20个100以内的数,输出,按从小到大顺序排序,输出到文件s.out中。
var a:array[1..20]of integer;
i,j,t:integer;
begin
assign(output,’s.out’);rewrite(output);
randomize;
for i:=1 to 20 do a[i]:=random(100);
for i:=1 to 19 do
for j:=i+1 to 20 do
if a[i]>a[j] then
begin t:=a[i];a[i]:=a[j];a[j]:=t end;
for i:=1 to 20 do write(a[i]:4);
close(output);
end.
3.给出一个数字三角形,求一条从顶到下的路径使和最大。对于每一点来说可以向下和向右走。
输入文件:sjx.in
第1行为三角形的行数n,以下n行为每行的数据。
输出文件:sjx.out。
仅一行,为最大值。
样例 sjx.in
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
sjx.out
31
var a:array[1..100,1..100]of integer;
n,i,j,max,k:integer;
begin
assign(input,’sjx.in’); reset(input);
assign(output,’sjx.out’);rewrite(output);
readln(n);
for i:=1 to n do
for j:=1 to i do read(a[i,j]);
for i:=2 to n do
for j:=1 to i do
begin max:=0;
for k:=1 to j do
if a[i-1,k]>max then max:=a[i-1,k];
a[i,j]:=a[i,j]+max;
end;
max:=0;
for i:=1 to n do
if a[n,i]>max then max:=a[n,i];
writeln(max); close(output);
end.
3 楼
ZXOO [专家分:30] 发布于 2009-07-28 10:06:00
难难难难难难难难难难难......
难题?
4 楼
tzhlryy [专家分:270] 发布于 2009-08-01 10:09:00
第一题将所有字符转换成ascii码,然后就是求最长不下降序列。
第二题。。。。。。可以成为难题吗?
第三题,先从上到下竟行贪心,之后从下向上进行动态规划,之后竟行比较。
我来回复