Trang 1 / 2 12 LastLast
Hiển thị kết quả từ 1 đến 10 / 16
  1. #1
    Tham gia
    23-06-2009
    Location
    Huyện Gia Bình - Tỉnh Bắc Ninh
    Bài viết
    323
    Like
    0
    Thanked 4 Times in 4 Posts

    đề thi học sinh giỏi

    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.
    Quote Quote

  2. #2
    Tham gia
    05-05-2004
    Bài viết
    216
    Like
    2
    Thanked 8 Times in 8 Posts
    bài này hay phết, cũng k đơn giản, k phức tạp

  3. #3
    Tham gia
    10-10-2009
    Bài viết
    9
    Like
    0
    Thanked 0 Times in 0 Posts
    theo cách của rieng minh thui nhé.. tạo thêm một mảng để lưu kết quả, khởi tạo mảng này bằng 0 bằng câu lệnh fillchar.
    bạn đọc dãy u sau đó i:=u[j]; inc(i);
    bạn đọc dãy v và làm như trên.. nhớ i là chỉ số phần tử của mảng mới..
    sau đó: for i to 32000
    if a[i]>1 then xuất ra...
    bạn thử làm nhé.. có gi để lại lời nhắn..

  4. #4
    Tham gia
    26-12-2008
    Bài viết
    41
    Like
    0
    Thanked 2 Times in 2 Posts
    m giới hạn là mấy thế lehang_gb1

  5. #5
    Tham gia
    23-06-2009
    Location
    Huyện Gia Bình - Tỉnh Bắc Ninh
    Bài viết
    323
    Like
    0
    Thanked 4 Times in 4 Posts
    m đơn giản là số nguyên, giới hạn m khôg quan trọng đâu

    [=========> Bổ sung bài viết <=========]

    Quote Được gửi bởi máterl View Post
    theo cách của rieng minh thui nhé.. tạo thêm một mảng để lưu kết quả, khởi tạo mảng này bằng 0 bằng câu lệnh fillchar.
    bạn đọc dãy u sau đó i:=u[j]; inc(i);
    bạn đọc dãy v và làm như trên.. nhớ i là chỉ số phần tử của mảng mới..
    sau đó: for i to 32000
    if a[i]>1 then xuất ra...
    bạn thử làm nhé.. có gi để lại lời nhắn..
    Thực sự tớ thấy ý tưởng của bạn chẳng ra thế nào. Thế bạn thử viết chương trình xem sao nào?
    Được sửa bởi lehang_gb1 lúc 20:27 ngày 28-10-2010 Reason: Bổ sung bài viết

  6. #6
    Tham gia
    10-10-2009
    Bài viết
    9
    Like
    0
    Thanked 0 Times in 0 Posts
    lehang_gb1 d thu lam theo cach cua minh chua????

  7. #7
    Tham gia
    01-02-2010
    Bài viết
    27
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi lehang_gb1 View Post
    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.
    Var i,j:integer;
    m:integer;
    u,v:array[1..100] of integer;
    Begin
    Readln(m);
    For i:=1 to m-1 do Read(u[i]); Readln(u[m]);
    For i:=1 to m do Read(v[i]):
    u[m+1]:=-32000;
    v[m+1]:=-32000;
    i:=1;
    j:=1;
    While (i<m+1) or (j<m+1) do
    Begin
    If (u[i]>v[j]) then
    Begin
    Write(u[i]:5);
    inc(i);
    End else
    Begin
    Write(v[j]:5);
    inc(j);
    End;
    End;{End While}
    Readln;
    End.

  8. #8
    Tham gia
    10-10-2009
    Bài viết
    9
    Like
    0
    Thanked 0 Times in 0 Posts
    duynhan1 có cố gắng nhưng sai rồi.. hi... bạn thử test 2 dãy u và v có số âm và có phần tử giống nhau xem.. sai.. hjk hjk (

  9. #9
    Tham gia
    20-03-2007
    Bài viết
    46
    Like
    0
    Thanked 0 Times in 0 Posts
    Bài này tư tưởng rất đơn giản, nó là phần hợp của thuật toán Merge sort.
    Merge sort là thuật toán sắp xếp dựa trên tư tưởng chia để trị. Một thuật toán chia để trị thường gồm 3 phần: phần chia, phần trị, và phần hợp. Bạn có thể đọc thêm sách để tham khảo.

  10. #10
    Tham gia
    23-06-2009
    Location
    Huyện Gia Bình - Tỉnh Bắc Ninh
    Bài viết
    323
    Like
    0
    Thanked 4 Times in 4 Posts
    code đây
    Code:
    Var A,B,C:array[1..100] of integer;
    i,m,h,k:integer;
    Begin
    write('Nhap vao so phan tu:');
    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.

Trang 1 / 2 12 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • 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
  •