제목 : CNR 및 지뢰 찾기 Xiaolu 퍼즐 특히 좋아하고, 그녀의 두 자신을 구출 수 없습니다 중독 가장 최근.
게임의 인터페이스는 매트릭스, 더 광산을 Sublattices없는 격자 일부 광산의 행렬이다. 게임, 그리드 알려진이며, 알 수없는 상태가 될 수 있습니다. 그리드가 공지 된 광산은이를 그리드에 기록 될되지 않으면 한자리이 그리드 연결 인접하는 8 개의 격자 광산의 총 수를 나타내고있다.
게임은 CNR 및 Xiaolu 3 행 N 열의 중이다 (모두 시작과 연속적인 양의 정수 번호로부터) 않았다 행렬이 행렬의 모든 공지 된 격자의 두 번째 행 및 광산, 다른 두 줄 알, 및 상기 광산의 갯수가 알려지지된다.
CNR 및 Xiaolu는 광산의 부설의 라인 1 라인 3 얼마나 많은 합법적 인 프로그램을 알고 싶어요.
복수의 세트를 포함하는 입력 테스트 데이터, 양의 정수 T의 첫번째 행은 데이터 세트의 수를 나타낸다.
단지 N 비 빈 문자열의 숫자의 길이만큼 각 데이터 열은 세 개의 행과 N 열, 내가 격자 i 번째 행 번호 2 행렬을 나타내는 영숫자의 문자열을 나타내는 행렬있다.
해당 문자열 길이 N을 확보하기 <= 10000 데이터 세트의 수 <= 100.
단 하나 개의 숫자 줄에 출력 결과 배치 광산 mod100,000,007 프로그램의 수를 나타냅니다.
샘플 입력
2 22 000
샘플 출력
6 일
아이디어는 세 가지 경우가 첫 번째 행에서 시작 (0,1,2) 광산
과거에 하나 열거 하나
한 두 번째 행의 첫 번째 열은 또한 당신이 결정할 수있는 다음 결정하기 위해 식별 할 수있는
나는 2 점을 워싱턴을 마지막으로 하나 더 솔루션 (I> 3주의 지불하지 않은) 한이 시점에서, 탈옥 것 <0>이 광산을 넣어 얼굴 현재이 결정하지 않았다
코드 :
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#INCLUDE <비트 / stdc ++ H.> 사용 스페이스 성병; #DEFINE가 긴 긴 줄게 #DEFINE 개조 100,000,007 INT ) (주 { int로 I, J, N, m, t; IOS :: sync_with_stdio ( 거짓 ); CIN >> t; 반면 (t-- ) { 스트링 들; CIN >> S; INT의 플래그 = 1 ; int로 A [ 10005 ]; 대 (I = 0 ; S [I]가, 난 ++ ) { A [i]를S = [I] - ' 0 ' ; 경우 (a [ 0 ]> 4 ) 플래그 = 0 ; 경우 (a [I]> 6 ) 플래그 = 0 ; } 경우 (플래그 == 0 ) { COUT << 0 << ENDL; 계속 ; } INT의 F [ 10005 ], X [ 10005 ]; INT LEN = s.size (), 마지막; LL 합 = 0 , ANS; ...에 대한(J = 0 ; J <= 2 , J는 ++ ) { memset 함수 (F, 0 , sizeof의 (F)); // 레이놀즈 번호를 넣어 memset 함수 (X, 0 , sizeof의 (X는)); // 여러 광산이 걸릴 마지막 J =; // 제 선 열 대 (I = 0 ; I 렌 <; I는 ++ ) { F [I] = 마지막; // 넣어 IF를 (I는 == 0 ) X [I]는 [I]를 = -f [I]는; // 또한 다른 X [I]은 [I] -f [I] -f [= I- . 1 ] // 또한 마지막의 = X [I]; 경우 (지난 < 0 || 마지막> 2 ) 휴식 ; } LL ANS = 0 ; 경우 (I == LEN && X [I- 1 ] == 0 ) { ANS = 1 ; 대 (I = 0 ; I <렌; 내가 ++) 의 경우 (F [I] == 1 ) ANS ANS * = 2 %의 모드; } 합 = ANS %의 개조 + 합 % 개조; } COUT << 합 %의 개조 << ENDL; } }