Trang 1 / 3 123 LastLast
Hiển thị kết quả từ 1 đến 10 / 27
  1. #1
    Tham gia
    14-09-2007
    Bài viết
    1
    Like
    0
    Thanked 0 Times in 0 Posts

    Các bạn giải giúp mình bài tập Pascal này với !!!

    Nhập vào mảng 2 chiều m x n phần tử. Sắp xếp mảng như sau:

    Vi dụ:
    Mảng nhập vào:
    1 2 3
    4 5 6
    7 8 9
    10 11 12

    Sau khi sắp xếp:
    1 8 9
    2 7 10
    3 6 11
    4 5 12

    Các bạn chỉ giúp mình thuật giải
    Quote Quote

  2. #2
    Tham gia
    25-09-2006
    Bài viết
    533
    Like
    0
    Thanked 1 Time in 1 Post
    cách làm:
    1.Biến mảng 2c thành 1c rồi xếp tăng
    2. Biến 2c thành 1c theo qui tắc:
    2.1 chẵn....
    2.2 lẻ.......
    {hoặc có thể viết ra...trực tiếp}

  3. #3
    Tham gia
    14-08-2007
    Bài viết
    64
    Like
    0
    Thanked 0 Times in 0 Posts
    @thuonghcm: theo mình nên nhập vào là mảng 1 chiều luôn cho đỡ tốn công (bước 1)
    Còn việc đưa về mảng đích thì cứ gán ban đầu i(chỉ số hàng) j(chỉ số cột) =1
    for j:=1 to số-cột
    {nếu j lẻ thì duyệt for i:=1 to số-hàng
    ngược lại for i:=số-hàng downto 1}
    gán vào mảng.
    Cuối cùng là in.
    Cách giải đơn giản nhất là vậy thôi

  4. #4
    Tham gia
    08-11-2004
    Bài viết
    1,023
    Like
    0
    Thanked 21 Times in 5 Posts
    @thuonghcm : sx sẵn rồi sx chi lại nữa.
    Bài này không cần làm dài dòng như bạn bilun đâu. Thuật toán đơn giản hơn đó là cho tất cả các số vào 1 set, sau đó write số nào ra thì del số đó trong set đi, làm cho đến khi set rỗng. Tất nhiên khi write sẽ lưu ý đến tính chẵn/lẻ của cột.

    Thuật toán đc biểu diễn như sau:
    - read file => đưa từng giá trị tại ô ij vào 1 set.
    - Gán 2 biến k,v = 1, repeat cho đến khi set A = []:
    + write(k)
    + for i := 2 to so_cot do {start từ cột 2 vì 1 đã write dòng trên}
    o. Nếu i%2=0 thì write(j=(k+((n*2)-1)); A := A - j;
    o. Ngược lại inc(v,2); write(j=k+v); A := A - j;
    + inc(k);

  5. #5
    Tham gia
    14-08-2007
    Bài viết
    64
    Like
    0
    Thanked 0 Times in 0 Posts
    À, đầu tiên là làm sao để đưa đc số từ ma trận vào set. Và set thì chỉ 256 phần tử thôi. Còn 1 điều nữa, biến k và v ở đây dùng để biểu diễn số nào vậy?
    write(j=(k+((n*2)-1)) :-??

  6. #6
    Tham gia
    08-11-2004
    Bài viết
    1,023
    Like
    0
    Thanked 21 Times in 5 Posts
    Quote Được gửi bởi bilun167 View Post
    À, đầu tiên là làm sao để đưa đc số từ ma trận vào set. Và set thì chỉ 256 phần tử thôi. Còn 1 điều nữa, biến k và v ở đây dùng để biểu diễn số nào vậy?
    write(j=(k+((n*2)-1)) :-??
    Biến k,v theo tui đc định nghĩa là biến quy luật.
    Và ở trên chỉ là mã giả. Thuật là vậy, còn nhiều cách cải tiến thuận lợi hơn. Cuối cùng việc đưa số từ ma trận vào set chỉ là vấn đề căn bản của tập hợp.

  7. #7
    Tham gia
    14-08-2007
    Bài viết
    64
    Like
    0
    Thanked 0 Times in 0 Posts
    Thuật giải bằng set có lẽ dùng cho FP hợp hơn, còn ý tui hỏi việc đưa số vào ma trận là do lúc đó tui hem để ý ông để luôn việc đưa vào set ở ngay trong input nên ko hình dung ra cách làm thôi

  8. #8
    Tham gia
    20-10-2006
    Location
    Sì Gòn
    Bài viết
    26
    Like
    0
    Thanked 1 Time in 1 Post
    Cái này là pascal, cao siêu thế em nó còn lâu mới hiểu chời... giải thuật đơn giản như thế này

    Đầu tiên
    viết 1 hàm đão thứ tự 1 mãng 1 chiều (VD 1 2 3 --> 3 2 1 )
    Kế tiếp
    Chạy 2 vòng For, đổi thứ tự dòng thành cột
    1 2 3
    4 5 6
    7 8 9
    10 11 12

    thành

    1 5 9
    2 6 10
    3 7 11
    4 8 12

    Tiếp gọi cái hàm đảo mãng, đảo tất cả cột có giá trị chẳn

    dể hiểu hông ???

  9. #9
    Tham gia
    14-08-2007
    Bài viết
    64
    Like
    0
    Thanked 0 Times in 0 Posts
    @truong0805: cách của bạn xem ra còn khó làm hơn cách của mình.

  10. #10
    Tham gia
    25-09-2006
    Bài viết
    533
    Like
    0
    Thanked 1 Time in 1 Post
    goi bạn truong0805:
    theo tui nghĩ đảo dòng thành cột thì....mảng phải vuông chăng?
    và với VD của bạn thì:
    1 4 7 10
    2 5 8 11
    3 6 9 12
    chứ sao bạn cho VD khi chuyển ...kì vậy!?!?

Trang 1 / 3 123 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
  •