コードは以下の通りであります:
1つの#include <iostreamの> 2 使用して 名前空間STDを、 3 構造体ノード 4 { 5 INT X、Y。 6 }。 7 INT [ 100 ] [ 100 ]、H、W。 8 // 队列 9 構造体キュー 10 { 11 ノード[ 100 ]。 12 int型のフロント。 13 int型のリア。 14 }、Q。 15 INTはn = 50。//保存された実際の空間は、0-nがN + 1です。 16 // フルチーム 。17 BOOL isFull() 18である { 19。 リターン(+ q.rear 1)%(N + 1)== q.front; 20 } 21である // ブランク強制 22が BOOL のisEmpty() 23は 、{ 24 リターン q.rear == q.front; 25 } 26である // エンキュー 27 空隙INQ(ノードX) 28 { 29 IFは(!isFull()) 30 { 31れます QA [q.rear] =のX。 32 q.rear =(q.rear + 1)%(N + 1 )。 33 } 34 他の 35 { 36 COUT << " キューがいっぱいです。" 。 37 } 38 } 39 // 出队 40 ノードOUTQ() 41 { 42 ノードT。 43 T = QA [q.front]。 44 q.front =(q.front + 1)%(N + 1 )。 45 リターントン。 46 47 } 48 ボイドマーク(ノードT_N) 49 { 50 ノードT。 51 [t_n.x] [t_n.y] = 2 ; 52 であれば(t_n.x- 1 > = 0 ) 53 { 54 TX = t_n.x- 1 。 55 TY = t_n.y。 56 であれば([TX] [TY] == 1 ) 57 { 58 INQ(T)。 59 } 60 } 61 であれば(t_n.y- 1 > =0 ) 62 { 63 TX = t_n.x。 64 TY = t_n.y- 1 。 65 であれば([TX] [TY] == 1 ) 66 { 67 INQ(T)。 68 } 69 } 70 であれば(t_n.x + 1 < w)の 71 { 72 TX = t_n.x + 1 。 73 TY = t_n.y。 74 であれば([TX] [TY] == 1 ) 75 { 76 INQ(T)。 77 } 78 } 79 であれば(t_n.y + 1 < H) 80 { 81 TX = t_n.x。 82 TY = t_n.y + 1 。 83 であれば([TX] [TY] == 1 ) 84 { 85 INQ(T)。 86 } 87 } 88 ながら(!のisEmpty()) 89 { 90 マーク(OUTQ())。 91 } 92 } 93 main()の 94 { 95 q.front = 0 。 96 q.rear = 0 。 97 INT C = 0 。 98 CIN >> H >> W。 99 のために(int型 I = 0 ; iが時間<; Iは++ ) 100 { 101 のために(INT J = 0 ; J <W; J ++ ) 102 { 103 CIN >> [I] [J]。 104 } 105 } 106 用(int型 iは= 0 ; iが時間<Iは++ ) 107 { 108 のための(INT J = 0 ; J <W; J ++ ) 109 { 110 もし([I] [J] == 1 ) 111 { 112 のノードT ; 113 TX = I; 114 TY = J。 115 マーク(T)。 116個の C ++ ; 117 } 118 } 119 } 120 COUT << C。 121 }
1つの経営成績:
エフェクト2を実行します。