|
J = zeros(100);6 C; P, H' z, n! k% R6 t. J0 K9 j
J(50:59,30:39)=1;
* ^- q% |1 Y$ f# J4 n5 R- wJ(50:59,70:79)=1;
4 _" I" H: G& n0 D# L5 bJ(50:59,50:59)=1;3 B7 {. I) {% L8 }2 l* P
J(70:79,40:49)=1;# @2 X( n+ m* B) q% i7 X( S6 c. X
/ \: |8 W( g' k; Q+ l* B
[rows, columns] = size(J);6 z" `) }- W! V( Z# [
count = 0;2 t2 s& E# _+ k
% Z* i2 w0 v5 S7 Q1 k
% 找到一个值为1的点的坐标
$ T: Y8 h3 M* R[y, x] = find(J==1, 1);
( R+ O! p% `. [' G* F3 {9 dwhile ~isempty(y). I/ I" W# t, b. @" m7 {5 K
count = count + 1;
, P7 H) s! `- Z( J flag = 1;
/ D8 Q2 K( |% w! a ns = 1;8 F0 l6 r( I( p! {( L' h
sy(1) = y;
/ c" y4 h4 k! l sx(1) = x;
, O: @+ [# E: m3 M+ j9 l while flag
8 W3 @/ j1 c% N' _& n, P% | nns = 0;. j0 k8 J, v: L, U n1 n
nsy = [];* e6 U- C, `) I# ~1 c
nsx = [];
+ q( @0 y7 ~) q( C; m % 向周围扩散
# U" Y1 [4 Q0 A+ E for i = 1:ns
8 e# D& q+ T0 I K% |6 h, D$ k J(sy(i), sx(i)) = 0;
|" |/ [ r% Z- U % top
0 G! g/ s. i. Q6 m# Z if sy(i) > 1 && J(sy(i)-1, sx(i))==1
* x; `6 E0 Q( A4 n/ P; b nns = nns + 1;* t. H( m& o$ |5 `$ h% K
nsy(nns) = sy(i) - 1;
6 p0 C |9 X$ P6 J, H# N, b: d nsx(nns) = sx(i);
9 m5 ^1 N" k j8 P end
1 K$ p3 a/ [' ` % down
[2 H) ]+ L" ^% Y9 Q if sy(i) < rows && J(sy(i)+1, sx(i))==1( i3 B; ~, U1 M. d- B; r) P( Y
nns = nns + 1;8 r# g/ }/ R3 @+ B3 |$ A* {
nsy(nns) = sy(i) + 1;3 W. \& M' l6 D7 t* e7 T2 h
nsx(nns) = sx(i);
5 h! V" s! z! x- _, ~8 S F end8 Z6 ]4 k6 ~( G/ n5 O; J
% left
7 V* W3 y: N: b4 z/ k0 ^ if sx(i) > 1 && J(sy(i), sx(i)-1)==1
3 d3 g) r6 a/ x7 W' I nns = nns + 1;
+ \: L4 v$ F2 c) G nsy(nns) = sy(i);
A/ A* r! U h. ?" v7 n nsx(nns) = sx(i) - 1;+ I) {+ r: b* K8 r
end+ p; ^ a9 Q2 u+ g( c( [3 n
% right
, A( Y$ ^: w5 O& z5 m if sx(i) < columns && J(sy(i), sx(i)+1)==1
* E- V' M9 F0 d nns = nns + 1;
- R9 y2 W" D$ W5 G2 z* n! a+ {9 R nsy(nns) = sy(i);
4 ]' B; q2 A" g4 t) u# ~ nsx(nns) = sx(i) + 1;
* g' f; v# G6 m- v end
+ Z8 V) L1 P. p5 v& }9 {, v end( ?, E$ V I$ O
. G8 ?0 q- Y+ w" _0 ?5 o
ns = nns;: [0 u, N: E: k$ }% t
sy = nsy;
% `5 ?" }' ~( f {. A0 }& k4 ^ sx = nsx;) y# g& v3 X: U3 w3 |0 Y, {+ \
+ V! P7 D/ P9 L P
if ns == 0
- z Q6 _. s& j. T8 i9 K8 q4 D7 @" g flag = 0;8 }3 r: i P6 N+ s. a R
end
. ]: V4 B8 }! O' f+ L6 x9 u0 H, g( r% {4 E6 I0 k4 y+ R4 K! ]
end& H7 P. D% _ p7 h R, @5 I
" I& n4 P4 Z4 {# Q [y, x] = find(J==1, 1);
7 R1 m% q" W! P3 fend
$ J+ G- s2 k' S% Q* }* i; g% y6 @7 u3 N- M0 z1 w8 J
disp(count);: t0 K4 g G' C6 t! D4 p. B0 x
" n; Q, n, I5 b, [
: ?$ O+ |, F! w: H# Y4 H
9 U' e8 A6 O3 N3 S3 R- i' a8 s试一下行不行啊
3 \" p. B7 ]: }9 U |
|