mong các bạn giúp mình bài sau:

H

hai6f2009

[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

:)] Miền liên thông
Cho bảng số MxN đơn vị. Mỗi ô gồm số 1 hoặc số 0. Hãy đếm xem có bao nhiêu miền số 0 và miền 0 nào có diện tích lớn nhất
:-@ INPUT: Dòng đầu ghi 2 số m và n
m dòng tiếp theo ghi bảng số
~X( OUTPUT: dòng đầu ghi số miền 0
dòng 2 ghi diện tích miền lớn nhất
Ví dụ: :-t INPUT \\:D/OUTPUT
4 5 3
10001 5
01001
10111
10000
Mình cảm ơn các bạn
 
H

hai6f2009

program miền liên thông

Loang vầy có đúng không bạn :confused::
program mienlienthong;
const fi='mien.inp';
fo='mien.out';
var f:text;
a:array[1..101,1..101] of integer;
s,x,y,k,max,m,n:integer;
procedure enter;
var i,j:integer;
begin
assign(f,fi);reset(f);
readln(f,n,m);
for i:=1 to m do
begin
for j:=1 to m do readln(a[i,j]);
if j=n then readln(f);
end;
close(f);
end;

function find(var x,y:integer):boolean;
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to n do
if a[i,j]=0 then
begin
x:=i;
y:=j;
exit(true);
end;
exit(false);
end;

function maxnumber(b:integer):integer;
begin
if b>max then max:=b;
end;

function expand(x,y:integer):integer;
var i,j:integer;
begin
if (x>=i) and (x<=n) then exit(0);
if (y>=i) and (y<=n) then exit(0);
if a[x,y]=1 then exit(0)
else begin
expand:=expand+1;
s:=s+1;
maxnumber(s);
end;
end;

procedure printresult;
var i,j:integer;
begin
find(x,y);
k:=expand(x,y);
assign(f,fo);rewrite(f);
writeln(f,k);
writeln(f,max);
close(f);
end;

BEGIN
enter;
printresult;
END.
:):):):):):)
 
T

thienvamai

procedure enter;
var i,j:integer;
begin
assign(f,fi);reset(f);
readln(f,n,m);
for i:=1 to m do
begin
for j:=1 to m do readln(a[i,j]);
if j=n then readln(f);
end;
close(f);
end;
cái này mình không hiểu, chắc là sai rồi :D
dùng readln con trỏ chuyển xuống luôn dòng tiếp theo
theo mình nghĩ với các số nó dính sát vào nhau nên dùng đọc string chứ
 
H

hai6f2009

hk có sai đâu pn. Thầy mình dạy thế và mình cũng thử nhìu lần rùi.
pn xem giúp mình phần dưới thôi
 
T

thienvamai

Theo code của bạn thì có vẻ bạn chỉ có thể loang đúng 1 lần lúc gặp số 0 đầu tiên
 
T

thienvamai

mình rất tiếc nhưng mình không biết code bằng pascal nên ko thể giúp j` đc (tuy đọc vẫn hiểu)
 
Top Bottom