當然現在知道 recursion 和 procedure call 原理都是一樣, 沒甚麼特別
(其實如果當年懂得 stack 的概念的話應該容易理解一點)
溫 342 procedure call 的時侯突然想起第一次寫 recursion, 便去找當年幼嫩的代碼
[PCOJ1057 Oil Deposits - Find #components in n*m grid]
var n, m, i, j, count : integer; v : array[0..105, 0..105] of boolean; s : array[0..105] of string; procedure lab(x, y : integer); var i, j : integer; begin v[x, y] := true; for i:=-1 to 1 do for j:=-1 to 1 do begin if (x+i=0) or (x+i>n) or (y+j=0) or (y+j>m) then continue; if (v[x+i, y+j] = false) and (s[x+i, y+j] = '@') then lab(x+i,y+j); end; end; begin readln(n, m); for i:=1 to n do readln(s[i]); count := 0; for i:=1 to n do for j:=1 to m do if (v[i, j] = false) and (s[i,j] = '@') then begin lab(i, j); count := count+1; end; writeln(count); end.
No comments:
Post a Comment