Kết quả 1 đến 7 của 7

Chủ đề: Đề thi HSG

  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    25

    Đề thi HSG

    Hôm nay thi học sinh giỏi cấp trường mình có bài toán này các bạn tham khảo và giải nhé
    Cho hai dãy số nguyên U=(u1,u2,.....,um) và V=(v1,v2,....,vm). Các phần tử của mỗi dãy được sắp xếp theo thứ tự không giảm, mỗi phần tử có giá trị tuyệt đối không quá 32000. Hãy hòa hai dãy U và V thành dãy không giảm.

  2. #2
    Ngày tham gia
    Nov 2015
    Bài viết
    23
    Hướng dẫn: lần lượt so sánh kí tự đầu (i) của dãy U và kí tự đầu (j) của dãy V để quyết định số nào được cho vào mảng kết quả trước, tăng i hoặc j tương ứng.
    Tới đây chắc bạn hiểu cách làm rồi.

  3. #3
    Ngày tham gia
    Aug 2015
    Bài viết
    150
    M,N nhỏ thì cứ trộn bừa rồi QSort cho nó tiện [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG])

  4. #4
    Ngày tham gia
    Aug 2015
    Bài viết
    6
    các bạn viết đầy đủ chương trình cho mình tham khảo xem nào
    CÒn mình thì ghép 2 mảng rồi sắp xếp không biết có được ko. Nếu làm như vậy thì thuật toán có độ phức tạp lớn vì phải sắp xếp lại.
    code của mình đây
    Mã:
    Var A,B:array[1..100] of integer;
    i,m,j,tg:integer;
    Begin
    Write('Nhap vao so phan tu cua mang');
    Readln(m);
    {Nhap vao 2 mang A,B}
    For i:=1 to m do
    Begin
     write('A[',i,']=');
     Readln(A[i]);
     End;
     For i:=1 to m do
    Begin
     write('B[',i,']=');
     Readln(B[i]);
    End;
    {Ghep mang B vao cuoi mang A}
    For j:=m+1 to 2*m do
    A[j]:=B[j-m];
    {Sap xep lai mang da ghep}
    For j:=2*m downto 2 do
      For i:=1 to j-1 do
       IF A[i]>A[i+1] then
       Begin
        tg:=A[i];
        A[i]:=A[i+1];
        A[i+1]:=tg;
      End;
      {Dua ra mang ket qua}
    For i:=1 to 2*m do write(A[i]:3);
    Readln
    End.
    Mình đã tìm bài này chính là nằm trong Sách bài tập tin học 11
    họ hướng dẫn là dùng các phần tử canh chừng A[m+1]:=32001; B[m+1]:=32001;
    Mình thấy như vậy thì hơi phức tạp, các bạn có thể sửa cách khác không
    code đây;
    Mã:
    Var A,B,C:array[1..100] of integer;
    i,m,j,k,h:integer;
    Begin
     Write('Nhap vao so phan tu cua mang');
     Readln(m);
     For i:=1 to m do
     Begin
      write('A[',i,']=');
      Readln(A[i]);
      End;
      For i:=1 to m do
     Begin
          write('B[',i,']=');
          Readln(B[i]);
     End;
     h:=1;k:=1; A[m+1]:=32001;B[m+1]:=32001;
     For i:=1 to 2*m do
      if A[h]<B[k] then
        Begin
          C[i]:=A[h];
         inc(h);
        end
         else
          Begin
    
             C[i]:=B[k];
             inc(k);
           End;
       For i:=1 to 2*m do write(C[i]:3);
     Readln
     End.

  5. #5
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Trích dẫn Gửi bởi tungthao94
    M,N nhỏ thì cứ trộn bừa rồi QSort cho nó tiện [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG])
    Suy nghĩ 1 chút đi em, vì 2 dãy đã sắp xếp sẵn rồi nên ta chỉ việc chọn phần tử rồi cho vào mảng kết quả là ok. Code này còn ngắn hơn code trộn bừa rồi sort của em đó [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]
    ---------------------------------Bài viết đã được trộn ---------------------------------
    Trích dẫn Gửi bởi honthien00
    Chịu ! :| . lâu rồi kô động vào ! [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]
    Bạn đừng viết bài thế này chứ, không đóng góp được gì cho box thì cũng đừng post bài nhạt nhẽo thế này.
    À mà sao lehang bị ban nick vậy?

  6. #6
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Mình rất ức chế, lần trước gửi tài đề tài mới làm thế nào mà bị gửi 3 lần, mình tìm để xóa mà không được. Vậy là bị ban nick.

  7. #7
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Trích dẫn Gửi bởi lehang_gb1
    Mình rất ức chế, lần trước gửi tài đề tài mới làm thế nào mà bị gửi 3 lần, mình tìm để xóa mà không được. Vậy là bị ban nick.
    Chắc do mạng bị làm sao đó thôi, mình thì cứ lần nào báo cáo admin là y như rằng trình duyệt thông báo lỗi, nhưng thực tế vẫn đăng bài được.

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •