Page 102 - C:\Users\Admin\Desktop\Sach mem upweb\
P. 102

100 Problems & Solutions                                               Trang 102


                        Clrscr;
                        Xuly;
                      END.
                      (Lời  giải  của  bạn:  Nguyễn  Việt  Bằng  -  Lớp  10  Tin  -  Phổ  thông  Năng  Khiếu  -
                      ĐHQG.TPHCM)

                      Bài 48/2000 - Những chiếc gậy
                      (Dành cho học sinh THPT)
                      Program bai48;
                      Var x:array[0..10000] of word;
                          d,a:array[1..1000] of byte;
                          n,p,s,gtmax:word;
                          fi,fo:text;
                          ok:boolean;

                      Procedure Q_sort(l,k:word);
                      Var h,i,j,t:word;
                      Begin
                        h:=a[(l+k)div 2];i:=l;j:=k;
                        Repeat
                          While a[i]>h do inc(i);
                          While a[j]<h do dec(j);
                          If i<=j then
                          Begin
                             t:=a[i];a[i]:=a[j];a[j]:=t;
                             inc(i);dec(j);
                          End;
                        Until i>j;
                        if i<k then Q_sort(i,k);
                        if j>l then Q_sort(l,j);
                      End;

                      Procedure phan(var ok:boolean);
                      Var i,p1,j:word;
                      Begin
                        Fillchar(x,sizeof(x),0);x[0]:=1;
                        For i:=1 to n do
                        If (d[i]=0) then
                        For j:=p downto a[i] do
                        If (x[j]=0) and(x[j-a[i]]<>0) then
                        Begin
                           x[j]:=i;
                           if j=p then
                           Begin
                              j:=a[i];
                              i:=n;
                           End;
                        End;
                        ok:=(x[p]<>0);
                        if ok then
                        Begin
                          p1:=p;
                          Repeat
                             d[x[p1]]:=1;
                             p1:=p1-a[x[p1]];
                          Until p1=0;
                        End;
                      End;



                      Tin học & Nhà trường                                       100 Đề Toán - Tin học
   97   98   99   100   101   102   103   104   105   106   107