古代ゴー(シンプルDFS)

トピックへのリンクhttp://acm.hdu.edu.cn/showproblem.php?pid=5546

ACコード:

  1の#include <iostreamの>
   2の#include <cstdioを>
   3の#include <CStringの>
   4の#include <アルゴリズム>
   5の#include <ビットセット>
   6の#include <cassert>
   7の#include <CCTYPE>
   8の#include <cmath>
   9#含める<cstdlib>
 10の#include <ctimeの>
 11の#include <両端キュー>
 12の#include <iomanip>
 13の#include <リスト>
 14の#include <地図>
 15の#include <キュー>
 16の#include < 設定 >
17の#include <積層>
 18#include <ベクトル>
 19  使用 名前空間STDを、
20 typedefの長い 長いLL。
21  CONST  ダブル PI = ACOS( - 1.0 )。
22  CONST LL MOD = 1E9 + 7 23  のconst  int型 INF = 0x3f3f3f3f 24  のconst  int型 MAXN = 5E4 + 50 25  INT次に[ 4 ] [ 2 ] = {{ 10 }、{ 01 }、{ -10 }、{ 0、 - 1 }}。
26  チャー STR [ 150 ] [ 150 ]。
27  INT VIS [ 150 ] [ 150 ]。
28  ブール CHECK1(int型のx、int型のY)
 29  {
 30      VIS [X] [Y] = 1 31      のためには、int型 = Iを0 ; iは< 4 ; iは++ 32      {
 33          INT XX = X +次に[I] [ 0 ]。
34は、         INT [YY Y +次に[I] = 1 ];
 35          IF(XXが> = 0 && XX < 9 && YY> = 0 && YY < 9!&& VIS [XX] [YY])
 36          {
 37              / * 2ケースは、ケースを変更した表し、全く密封されていない* / 
38である             IF(== STR [XX] [YY] ' 'リターンtrueにし39 IF(STR [XX] [YY] == ' O ' && CHECK1(XX、YY))リターンtrueに;
 40         }
 41であります                     }
 42      リターン 43  }
 44  ブールチェック(int型のx、int型のY)
 45  {
 46      STR [X] [Y] = ' X '/// 把点换为'X' 
47      ブールフラグ= 48      のためには、int型 = Iを0 ; iは< 4 ; iは++ 49      {
 50          INT XX = X +次に[I] [ 0 ]。
51          INT YY = Y +次に[I] [ 1];
 52は、         IF(XXが> = 0 && XX < 9。 && YY> = 0 && YY < 9。 53である         {
 54は             IF(YY] == [STR [XX] ' O ' 55              {
 56である                  のmemset(VIS、0sizeof (VIS));
 57である                 場合(!CHECK1(XX、YY))が/// この'O'が封入されているかどうかをチェック
58                  {
 59                      =フラグにはtrueに60                      BREAKを61であります                 }
 62は             }
 63である         }
 64      }
 65      STR [X] [Y] = ' ' ; /// 変更をキャンセル66 リターンフラグに;
 67 }
 68 のint main()の
 69 {
 70 のint T、
 71である      CIN >> T;
 72 INTを = K 1。;
 73は、一方(T-- 74     {
 75 のためにint型 I = 0 ;私は<
                                 9 ; I ++ 76          {
 77              CIN >> STR [I]。
78          }
 79          ブールフラグ= 80          のためには、int型 i = 0 ; iは< 9 ; iは++ 81          {
 82              のためのint型 J = 0 ; J < 9 ; J ++ 83              {
 84                  であれば(STR [I] [J] == ' X ' || STR [I] [J] == ' O '続け85                  他の
86                  {
 87                      IF((I、J)を確認してください)/// 周りX Oチェックが封止さと結合することができる
88                      {
 89                          フラグに= trueに90                          BREAK ;
 91である                     }
 92                  }
 93              }
 94              IF(フラグに)BREAK ;
 95          }
 96          COUT << " ケース#" << << K ++ " " 97          であれば(フラグ)はcout << " 一手に殺すことができる!!! " << てendl;
98          他の裁判所未満<< 一手に殺すことができません!!!  << てendl;
99      }
 100      戻り 0 ;
101 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/wsy107316/p/11323046.html