主题:请教高手
Laputa
[专家分:0] 发布于 2006-04-02 18:11:00
题目1:已知一个高精度的正整数n(n<241位),去掉其中的任意s个数字后剩下的数字按原左右次序组成一个新的正整数.对给定的n和s(s<240),采用贪心算法编程寻找一种方案,使剩下的数字组成的新数P最小.例如:n=178543,s=4时组成的最小新数为P=13.
题目2:给定整型数组A[n](1<n<100).请分别按下述两种算法变成实现将数组降序排序,将排序后的数组存入B[n].
(1)快速排序(quick)
(2)希尔排序(shell)
题目3:给定字符型数组H[n](1<n<20),要求编程完成:
(1)对此数组构造哈夫曼树HT(hfcreate);
(2)求出所有字符的哈夫曼编码(hfcode).
本题可以用伪代码编程.
回复列表 (共3个回复)
沙发
贺天行宝 [专家分:2300] 发布于 2006-04-03 17:03:00
第一题
var
s:string;
i,j,k,l,m,n:integer;
begin
readln(s);
readln(k);
for i:=1 to k do
begin
j:=1;
while (s[j+1]>s[j])and(j<=length(s)) do inc(j);
if j=length(s)+1 then dec(j);
delete(s,j,1);
end;
writeln(s);
end.
别忘加分阿
板凳
LZR2005 [专家分:110] 发布于 2006-04-03 17:21:00
快速排序
program kuaisu(input,output);
type
arr=array[1..7] of integer;
var
a:arr;
i,j,k:integer;
procedure sort(var a:arr;var m,n:integer);
var
x,p,q:integer;
begin
x:=a[m];
repeat
while ((m<n) and (a[n]>x)) do n:=n-1;
p:=a[m];a[m]:=a[n];a[n]:=p;
while ((m<n) and (a[m]<x)) do m:=m+1;
p:=a[m];a[m]:=a[n];a[n]:=p
until m=n
end;
begin
writeln('input 10 integer num:');
i:=1;j:=1;k:=7;
repeat
read(a[i]);
i:=i+1;
until i>7;
sort(a,j,k);
for i:=1 to 7 do
write(a[i]:4);
writeln('j=',j:4,'k:',k:4)
end.
3 楼
贺天行宝 [专家分:2300] 发布于 2006-04-03 20:39:00
李哲人你。。。。。。
我来回复