【JZOJ] 1341(水)

あなたは水を汲み上げ、いくつかのポンプを購入する必要が効果の対象に。ポンプのポンプ容量が無限と考えることができますが、あなたは正しい場所にポンプする必要があり、町はN * Mの行列とみなすことができます。マトリックス内の各セルは「A'-」Z「小文字、小文字は、格子の高さを示しており、大きな文字は、細胞が比較的高い示し、逆に、グリッドの高さが比較的低い表します。現在のセルの水がアップ流れることができ、下、左、右グリッド、ポンプの合計数があることを?

この質問は、なぜ、検索を行うために使用することができますか?

私たちは、マップビュー*として町を見ることができますメートル **マップ、私は各グリッドの深さを知っている、と私は最も深いの1つを探しています、までしか使用することができますし、ダウンを見つけるために- N

我々は、地図のn×m個(正方形から成る)の部分の大きさ、グリッドの最大検索に変換することができます。

だから我々は完全にDFS DFSを使用して考えることはできませんが、

私たちは、このグリッドは、私は範囲のマップであることの中に、これはマークされたグリッド(つまり、渡されていない)でない場合は、[I] [J] S、状態を保持するために、配列を使用して、できる、我々は実行することができます最終出力ANSのDFS機能

その後、新しいXを決定した後、我々は最初の現在の状態を保存する関数s [i]の[j]を使用して、さらに検索DFSでは、我々は上に移動し、四方上下、新しいサイクルX、Yを保存する必要がありますそしてyは、再び私たちの配列sの範囲内で標識し、その後、現在の位置は(その場で残すために持っていることは非常に重要な)その場に残されているかどうかを判断しているかどうか、その後、我々は新しいxとyを取得する必要があり、コール、マークを行う(マークがサイクルの前に置く、クリアすることを忘れないでください)

実際には、これは再帰のようにDFSが、DFSなどがあります。

この質問はとても完成されました。

バーコード

1含める<入出力ストリーム>
 2含める<cstdioを>
 3含める<cmath>
 4 <アルゴリズム>含む
 5 <CStringの>含む
 6を 使用して 名前空間STDを、
7  
8  のconst  int型 MAXN = 53 9  
10  INT N、M。
11  
12  チャー迷路[MAXN] [MAXN]。
13の 
14  CHAR S [MAXN] [MAXN]。
15  
16  のint XI [] = { 00、 - 11 }。
17  
18 INTの YI [] = { 1、 - 100 }。
19の 
20  空隙 DFS(int型のx、int型の Y){S [X] [Y] = 1以下のためにint型 i = 0 ; iは< 4 ; iは++ ){
 21  
22      INT NX = X + XI [I]; 
23  
24      INT NY = Y +のYIの[I]。 
25  
26      であれば(NX> = 0 && NX <N && NY> = 0 && NY <M && S [NX] [NY] == 0 &&迷路[NX [NY]> = 迷路[X] [Y]){
27          DFS(NX、NY);
 28  
29      }
 30  
31れる }
 32 } // 非常に簡単な検索
33は 
34である INT (メイン){
 35  
36  INT T = 0 ;
 37 [  
38である CIN >> T;
 39  
40  ながら(T- - ){
 41は 
42である      >> CIN >> N M、
 43は 
44である     ためint型 I = 0 Iは、N <; I ++は){
 45  
46である          CIN >> 迷路[I];
 47  
48      }
49  
50      のmemset(S、0はsizeof (S))。
51  
52      INT ANS = 0 53  
54      のためにチャー C = ' ' ; C <= ' Z '、C ++ ){
 55 56 のためにint型 I = 0 ; iがNを<; Iは++ ){
 57 58 のためにINT J = 0 ; J <M。 J ++ ){
 59 60 であれば(S [I] [J] == 0 &&迷路[I] [J] == 
          
              
                 C){
 61の 
62                      DFS(i、j)は、
63の 
64                      ANS ++ ;
65  
66                  }
 67  
68              }
 69  
70          }
 71  
72      }
 73  
74      COUT << ANS << ENDL。
75      リターン 0 ;
76 }

 

おすすめ

転載: www.cnblogs.com/WestJackson/p/11343622.html