Đếm số hình chữ nhật trong bảng

T

thienvamai

vì theo đề bài các hình chữ nhật ko tiếp xúc với nhau, nên ta chỉ cần đếm số vùng liên thông toàn 1.
với 1 ô có trỉ số a[j]=1 nếu ố trên , trên trái, trái của nó đều mang giá trị 0 thì biến đếm số hcn tăng lên 1.
 
L

lamdetien36

Nó tựa tựa câu 3 của đề này đề THT Hà Tĩnh 2011.
Mà bạn cho mình cái tên hay dữ :|
 
M

megamanxza

Nó tựa tựa câu 3 của đề này đề THT Hà Tĩnh 2011.
Mà bạn cho mình cái tên hay dữ :|

Hây daaaaaaaa! Bần tăng đùa tí ấy mà!
Mà ý bạn là bài 3 của đề này phải không: https://www.google.com.vn/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0CEQQFjAE&url=http%3A%2F%2Fvnoi.info%2Findex.php%3Foption%3Dcom_fireboard%26func%3Dview%26id%3D48524%26catid%3D13%26Itemid%3D26&ei=LKnSUfmNKMqpkQXw9IGACQ&usg=AFQjCNF_h9YH-bNJXAvSvB5FEQz2hGTFdQ&sig2=LUYZz1Nmm8FFBWNkpa40kw&cad=rja
P/s: anh mikel nói chú ý kích thước hình ảnh là sao vậy anh?
 
C

cuong276

https://docs.google.com/file/d/0B6ZIFdVAHwEIeFVJbV9jYnVlRDg/edit .
Lạ nhể. Đề này ghi là THT Hà Tĩnh 2011 mà, sao nó khác hẳn cái đề của bạn thế nhể :confused:

Bài này khá đơn giản.
Dùng thuật toán loang là ok

Mã:
var     n,i,j,d:integer;
        a:array[1..100,1..100]of 0..1;
        b:array[1..100,1..4]of integer;
        f,g:text;
procedure loang(i,j:integer);
begin
        if a[i,j]=1 then
                begin
                        a[i,j]:=0;
                        b[d,3]:=i;
                        b[d,4]:=j;
                        if i>1 then loang(i-1,j);
                        if j>1 then loang(i,j-1);
                        if i<n then loang(i+1,j);
                        if j<n then loang(i,j+1);
                end;
end;
BEGIN
        assign(f,'hcn.inp'); reset(f);
        readln(f,n);
        for i:=1 to n do
                begin
                        for j:=1 to n do read(f,a[i,j]);
                        readln(f);
                end;
        close(f);
        assign(g,'hcn.out'); rewrite(g);
        d:=0;
        for i:=1 to n do
                for j:=1 to n do
                        if a[i,j]=1 then
                                begin
                                        inc(d);
                                        b[d,1]:=i;
                                        b[d,2]:=j;
                                        loang(i,j);
                                end;
        writeln(g,d);
        for i:=1 to d do
                begin
                        for j:=1 to 4 do write(g,b[i,j],' ');
                        writeln(g);
                end;
        close(g);
END.
 
Top Bottom