Go Back   VN-Zoom Forum > Chia sẻ kiến thức > Lập trình > Pascal | C/C++

 



Trả lời Gửi Ðề Tài Mới
 
Ðiều Chỉnh Xếp Bài
Old 25-07-2008, 13:52   #1
Gà Con
 
VTAVTA's Avatar
 
Tham gia: Jul 2008
Bài: 5
VZD: 345
Điểm: 0/0 bài viết
Thumbs up help me(vta)

cho ma trận A(m,n) điền 0 or 1.
tìm đường đi ngắn nhất để đến biên.
inp: A,m,n,x,y
out : l
vd:
inp:
m=4,n=4.:
mảng A:
1 1 1 0
1 0 0 1
0 0 0 0
1 1 0 0
x=2,y=2
out:
l=3
VTAVTA vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-07-2008, 08:26   #2
Rìu Sắt Đôi
 
darling's Avatar
 
Tham gia: Dec 2007
Bài: 237
VZD: 5.951
Điểm: 85/48 bài viết
Default

bạn cho mình hỏi giá trị x,y là gì??? và khi out ra thì l đó sao mình chưa hiểu ví dụ bạn lắm.
__________________
http://it9x.co.cc

darling vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-07-2008, 06:54   #3
Gà Con
 
VTAVTA's Avatar
 
Tham gia: Jul 2008
Bài: 5
VZD: 345
Điểm: 0/0 bài viết
Default

x,y là vị trí xuất phát.
A[x,y]=0.
note:chỉ đi vào ô số 0.
VTAVTA vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-08-2008, 20:50   #4
Búa Đá
 
minhngq's Avatar
 
Tham gia: Jul 2008
Bài: 60
VZD: 1.726
Điểm: 16/14 bài viết
Default

Dùng thuật toán loang theo chiều rộng hoặc dijtra (tên đại loại thế) là xong thôi.. Đâu có phức tạp gì đâu...

Cheers,
minhngq vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-08-2008, 17:36   #5
Gà Con
 
VTAVTA's Avatar
 
Tham gia: Jul 2008
Bài: 5
VZD: 345
Điểm: 0/0 bài viết
Default

bác nói rõ hơn đi
em chưa hiểu
VTAVTA vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-08-2008, 21:18   #6
Búa Đá
 
minhngq's Avatar
 
Tham gia: Jul 2008
Bài: 60
VZD: 1.726
Điểm: 16/14 bài viết
Default

Lấy thuật toán loang theo chiều rộng cho đơn giản nhé.
  1. Từ ô bắt đầu (trong trường hợp này là ô {2,2}) bắt đầu di chuyển ra các ô có thể đi được xung quanh theo 4 hướng trên ({1,2}), dưới ({3,2}), trái ({2,1}), phải ({2,3}). Ô có thể đi được là ô mà: hoặc là có giá trị = 0 trong ma trận ban đầu; hoặc là có giá trị = 0 trong bảng đánh dấu ở bên dưới. Từ các ô này lại đi tiếp theo 4 hướng cho đến khi ko đi được nữa.
  2. Sử dụng 1 bảng đánh dấu có kích thước là mxn để đánh dấu các ô nào đã đi rồi (ký hiệu = 1) và chưa đi (ký hiệu = 0)
  3. Sử dụng 1 bảng có kích thước mxn để đo khoảng cách ngắn nhất từ ô ban đầu đến ô đó (ví dụ đặt tên là BangKhoangCach với BangKhoangCach[2,2]=0). Giá trị khoảng cách của 1 vị trí {y,x} bất kỳ = min(các giá trị tại 4 ô lân cận) + 1. Trong vị trí của 1 ô ko đi được, bồ đặt 1 số cực lớn vào (ví dụ 10000).
  4. Sau khi đã đi qua hết tất cả các ô có thể đi được trong bảng. Bồ chỉ cần tìm các ô biên xem ô nào có giá trị trong BangKhoangCach thấp nhất thì đó chính là đáp án. Còn nếu giá trị thấp nhất bằng hoặc lớn hơn số cực lớn đó (10000) thì là ko có đường đi.
Cheers
minhngq vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời Gửi Ðề Tài Mới

Tags
hdfg

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
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ể tự sửa bài viết của bạn

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt
Trackbacks are Tắt
Pingbacks are Tắt
Refbacks are Tắt
Chuyển đến


Múi giờ GMT +7. Hiện tại là 16:44.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
Từ điển được cung cấp bởi VDict.com - Hosting được tài trợ bởi Rao vặt 123