PDA

View Full Version : [TUTOR] Những thuật toán sử dụng ma trận



BigBoss
24-04-2003, 23:09
Đây là bài viếc dành cho những ai mới lập trình. Trong bài này có những sơ sót mong các bạn góp ý để hoàn thiện hơn. Trong bài này tôi xin dùng ngôn ngữ chung hay còn gọi là mã giả để nêu các thuật toán.
Trước hết tôi xin giới thiệu với các bạn về thuật toán vết dầu loan.
Thuật toán này dựa vào phép đệ quy nên chưa được tốt nếu bạn nào có phương pháp hay hơn xin chỉ giáo.
Dùng một mảng 2 chiều A co n cột và m dòng.
Ta chọn một điểm trong A.
proced vetdauloan(x,y)
{
if(A[x,y]<>0) then A[x,y] = 1;
if(A[x+1,y]<>0) then vetdauloan(x+1,y);
if(A[x,y+1]<>0) then vetdauloan(x,y+1);
if(A[x-1,y]<>0) then vetdauloan(x-1,y);
if(A[x,y-1]<>0) then vetdauloan(x,y-1);
if(A[x+1,y+1]<>0) then vetdauloan(x+1,y+1);
if(A[x-1,y-1]<>0) then vetdauloan(x-1,y-1);
if(A[x+1,y-1]<>0) then vetdauloan(x+1,y-1);
if(A[x-1,y+1]<>0) then vetdauloan(x-1,y+1);
}

ndt_skeleton
28-04-2003, 23:31
Sao ban khong dung mang hang
d : array[1..8,1..2] of shortint =
(
(0,+1) , (0,-1) , (1,0) , (1,-1) , (1,+1) , (-1,-1) , (-1,0) , (-1,+1)
)
roi dung vong lap fỏ co nhanh hon dung if then khong??

BigBoss
05-05-2003, 19:53
Dùng cách cua ban cung duoc. Nhưng vì dùng vùng nhớ nhiều không nên sử dụng thêm mang nữa.

CrazyBabe
11-05-2003, 16:00
Về mặt lý thuyết mà nói thì dùng phép if nhanh hơn là lấy chỉ số mảng đấy. Vì bỏ qua bước tính toán địa chỉ của mảng chỉ số kia.