Originally posted by 09520281
View Post
Announcement
Collapse
No announcement yet.
[Lập trình newbie] Mỗi ngày một bài toán (số 11)
Collapse
X
-
-
Originally posted by 11520473 View PostAnh ơi cho em hỏi. Đường chéo là như thế nào ạ. Trong ma trận hình vuông thì mới có đường chéo chứ, còn hình chữ nhật thì xác định đường chéo như thế nào ạ
..#...
...#..
Facebook: Kiều Thắng
Google Plus: Kiều Thắng
Thông tin về du học các nước: Du học.
Comment
-
Nếu đề như cũ thì chúng ta nên đếm làm sao cho số khóm cỏ là ít nhất, hay nhiều nhất. ()
Sửa đề tí cho đơn giản. :shy:
...
Mỗi khóm cỏ trên bản đồ được đánh dấu bằng một ký tự ‘#‘ hoặc một nhóm ký tự ‘#’ nằm kề nhau (một ô thuộc nhóm là ô có khả năng đến được một ô khác cũng thuộc nhóm đó chỉ bằng một bước duy nhất : {lên, xuống, trái, phải}) :adore:
#####
OOOOO
#OO##
O#OO#
như thế này thì chúng ta có 4 nhóm.Phạm Minh Tâm
Phone: 01643-652-922
Skype ID: tampham47@live.com
Comment
-
Code:const fi = 'GAMCO.INP'; fo = 'GAMCO.OUT'; dx : array[1..4] of longint = (-1,0,1,0); dy : array[1..4] of longint = (0,1,0,-1); maxN= 100; type pos = record i,j :longint; end; var f1,f2 : text; free : array[1..maxN+1,1..maxN+1] of boolean; a : array[1..maxN+1,1..maxN+1] of char; q : array[1..maxN*maxN+1] of pos; n,m,first,last : longint; procedure openfiles; begin assign(f1,fi); reset(f1); assign(f2,fo); rewrite(f2); end; procedure closefiles; begin close(f1); close(f2); end; procedure init; var i,j : longint; begin readln(f1,n,m); for i := 1 to n do begin for j := 1 to m do read(f1,a[i,j]); readln(f1); end; end; procedure push(i,j : longint); begin inc(last); q[last].i := i; q[last].j := j; end; function pop : pos; begin pop.i := q[first].i; pop.j := q[first].j; inc(first); end; procedure bfs(i,j : longint); var k,ii,jj : longint; p : pos; begin //Empty queue; first := 1; last := 0; push(i,j); free[i,j] := false; repeat p := pop; for k := 1 to 4 do begin ii := p.i + dx[k]; jj := p.j + dy[k]; if (ii >=1) and (ii <= n) and (jj >= 1) and (jj <=m) and (a[ii,jj] = '#') and free[ii,jj] then begin free[ii,jj] := false; push(ii,jj); end; end; until first>last; end; procedure solve; var res,i,j : longint; begin res := 0; fillchar(free,sizeof(free),true); for i := 1 to n do for j := 1 to m do if (a[i,j] = '#') and free[i,j] then begin inc(res); bfs(i,j); end; write(f2,res); end; begin openfiles; init; solve; closefiles; end.
Don't depend too much on anyone in this world. Because even your shadow leaves you when you're in darkness.
Comment
Comment