[]하지 마십시오 hdu2089 (62) [디지털 DP]

난 그냥 것보다 왜 더 이해하지 못하는 몇 가지 사전 튀긴 다음 mzoj에 넣어 또한 사전-8을해야합니다

정말 내가 쓰고 싶은 그것은 QAQ의 버전을 DFS

사용법 #include <iostream> 
#INCLUDE <cstdio> 
#INCLUDE <큐> 
#INCLUDE <CString을> 
#INCLUDE <cmath> 
#INCLUDE <적층> 
#INCLUDE <알고리즘>
 사용  스페이스 성병;
#DEFINE 줄게 긴 긴
 #DEFINE의 RG 레지스터
 CONST의  INT N = 2,000,000,000 + 5 , PW = 11 , INF = 0x3f3f3f3f , P = 19,650,827 ; 
LL A, B, X, Y; 
LL의 기지국 [ 20 ], F [ 20 ] [ 10 ];
//填了多少当前 
서식 < 클래스 t> 공극 RD (t 및 X) 
{ 
    X = 0 ; INT w = 0 ;  CH = 0 ;
    잠시 w | = CH == (isdigit에 (CH)!) ' - ' , CH = getchar가 ();
    반면 (isdigit에 (CH2)) X = (X << 1 ) + (X << 3 ) + (CH ^ 48 ) = CH getchar가 (); 
    X ? = w - X : X; 
} 

보이드 프리 () {
     위해 ( int로 I = 0 ; I <=9 ; I ++) F [ 1 ] [I] = ((I ==! 4 ));
    위한 ( int로 I = 2 ; 나는 <= 8 ; ++ I)
      ( INT의 J = 0 ; J <= 9 ; ++ j)는 {
         만약 (j의 == 4 ) {F [I] [J] = 0 ; 계속 }
         에 대해 ( INT에서 K = 0 ; K <= 9 ; ++ K)의
         경우, ((k 값 ==! 4 || j 개의 == 6 && 유전율 == 2 F [I] [J] + = F의 [)) I- 1][케이]; 
    } 
    
} 

해결하는 것이다 (LL의 XX) { 
    LL의 P = 0 , NUM [ 20 ], 합계 = 0 ;
//     대 (p = 0; p <= 13; ++, P)의 경우 (베이스 [P]> X) 분해; 
    반면 (XX) NUM는 [++ P가]에서 XX % = 10 , XX / = 10 ; 
    NUM [P + 1 ] = 0 ;
/ *     위해 (; 나는 <P를, I = 1 값 int ++ I) 
    대 (INT의 J = 1; J <= 9; ++ j)의 합계 = F + [I] [J] 
    (1 = 1에서 INT; I <NUM [P] I ++) 합계 = F + [P] [I]; 
    {- 위해 (I; I> 0 I = P-1 INT) 
           대 (INT의 J = 0; J <NUM [I]; ++ j)를 
           ! 경우 ((j의 == 2 && NUM [I + 1] = = 6)) 합계 = F + [I] [J]
        경우 (NUM [I] == 4 || (NUM [I] == 2 && NUM [I + 1] == 6)) 브레이크; 
    } * /
     에 대한 ( int로 I = P, I> 0 ] - I) {
          ( INT의 J = 0 ; J <NUM [I]; ++ j)의
            경우 ! ((j의 == 2 && NUM [I + 1 ] = = 6 )) 합계 = + F [i]는 [J]
        경우 (NUM [I] == 4 || (NUM [I] == 2 && NUM [I + 1 ] == 6 )) 브레이크 ; 
        
    } 
    리턴 합; 
} 

int 형 ) (주 
{ 
    // freopen을 ( "in.txt", "R", 표준 입력);
    // freopen을 ( "nocows.out", "w", 표준 출력);
    사전 ();
/ *    위해 (I = 1을 나타내는 int i가 <= 9; I ++) { 
       printf와 ( "\ n")를; 
       대 (INT의 J = 0; J <= 9; ++ J)의 printf ( "%의 D ', F [i]는 [J]); 
   } * / 
    상태 (는 scanf ( " %의 LLD의 %의 LLD ' , A, 및 B) == 2 && &&의 b) { 
        의 printf ( " % LLD \ 없음이 " 해결 (b + 1 ) - 해결 (a)); 
    } 
    반환  0 ; 
}

 

추천

출처www.cnblogs.com/lxyyyy/p/11002792.html