トピックへのリンク: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 ] = {{ 1、0 }、{ 0、1 }、{ -1、0 }、{ 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、0、sizeof (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 }