回 帖 发 新 帖 刷新版面

主题:请教高手

题目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个回复)

沙发

第一题
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.
别忘加分阿

板凳

快速排序
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 楼

李哲人你。。。。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册