DP 주제 제목 기록

1. 2 개 분할 수가

https://ac.nowcoder.com/acm/problem/16695

. (1) #INCLUDE <비트 / STDC ++ H.>
 2  은 USING  스페이스 STD]
 . 3  #DEFINE LL 긴 롱
 4.  #DEFINE EPS-1E 6.
 5.  INT ANS = 0 ;
 . 6  INT의 N-, K]
 . 7  공극 DFS ( INT의 ID, INT의 SUM, INT 브로)
 8.  {
 9.      / * IF (K-ID 1 && == + SUM 브로 <= N-) {// 마지막 숫자 n 합 존재> 수가 증가 = 브로 세트. 
 10          ANS ++]
 . 11          반환하는 단계;
 12이다      }
 (13)가      대해 INT (I = 브로; I <= N-; I는 ++) {
14          의 경우 (합계 + I> N)
 15              체류;
16          DFS (ID + 1 합 I, I +에게);
17      } * /  
18     의 경우 (ID K == && 합 == N)
 19      {
 20          ANS ++ ;
21          ;
22       }
 23        
24      경우 (ID> = K || 합> N)
 25      리턴 ;
26      
27       ( INT는 브로 = 1; i가 <= N; 내가 ++ ) {
 28 일          경우 (합계 + I> N)
 29          체류 ;
(30)         DFS (ID + 1 , 합계 + I, I에게);
31      }
 32  }
 33   
34  INT 주 ()
 35  {
 36      동안 (는 scanf ( " %의 D % d에 " !, N, K) = EOF) {
 37          의 ANS = 0 ;
38          DFS ( 0 , 0 , 1 );
39          의 printf ( " % D \ 없음 " , ANS);
40      }
 41      반환  0 ;
42 }
코드보기

 

2. 단어 3 별 카드 놀이

. (1) #INCLUDE <비트 / STDC ++ H.>
 2  은 USING  공간 STD]
 . 3  
. 4  구조체 노드 {
 . 5       S [ 22이다 ]
 . 6      INT LEN]
 . 7      INT의 V; // 선택한 횟수 
. 8 } C [ 22이다 ]
 . 9  INT N, MAXN;
 10  
.도 11  무효 DFS ( INT의 X, INT LEN) { // 현재 단어 길이 긴 전류 번호 
12는      위해 ( INT I = 1. ; I <= N, I는 ++) {    //은 N 워드의 그룹으로부터 선택 될 수있다
13 인          경우 (C는 [I] .V < 2 ) // 선택된 2보다 작은 횟수 
14          {
 15               ( INT J = 0 {; J <C는 [X]를 .LEN J ++)    // 단어가 전에 결정되고 현재 단어 선택과 동일 영역 
16                  IF (C [X] .S [J]를 == C는 [I]가 [.S 0 ]) {   
 17.                  INT K = 1. , T의 = 1. , L;
 18 인                  에 대한 (L J = + 1이다. ] L <C [X] && .LEN K <C [I] .LEN; K ++, ++ L) {
 . 19                      IF ! (C [X] .S [L] = C [I] .S [ K])
 (20)가                      {
 21는                          T = 0;    BREAK ;
 22이다                      }
 23이다                  }
 24                  IF (! L = C [X] .LEN)   // DESCRIPTION 워드 X 제가 포함하는 단어이다 
(25)                  T = 0 ;
 26 인                  경우 (T)   // 설명 워드 X 나 단어로하지 접속되어 함유 
27                  {
 28                      C는 [I]를 .V ++ ;
 29                      DFS (I, C + LEN [I] .len- ; K)  
 (30)                      C는 [I] .v-- ;
 31이다                  }                
 32                  }
 33이다              }
 34 인         }
 35      }
 36      MAXN = 최대 (MAXN 렌)
 37 [  }
 38 인  
39  INT {() 본체
 (40)는      N CIN - >>; // 단어의 수가 
41이기      위해 ( INT는 = I . (1) , I는 <= N-; I는 ++ ) {
 42는      CIN C >> [I] .S; // 1 워드 콘텐츠 
(43)는      C [I]의 strlen .LEN = (C [I] .S) // 제 워드 길이는 
44이다      }
 45      CIN >> C [ 0 ] .S; // 관용구 이니셜     
46되는      C는 [ 0 ] = .LEN의 strlen (C는 [ 0 ] .S);
47      
48      DFS ( 0 , C [ 0 ] .LEN);
49      COUT << maxn << ENDL;
50 }
코드보기
의 DFS 사용 : 상기 프로그램의 최대 값을 검색 
여러 x로 이루어진 프로그램을, DFS에서 X에 대한 프로그램의 n 개의 종류가있다 X 
공극 DFS ( INT X) 
{ 
 ( INT I = 0 ; I는 N <; I는 ++ )이 
.. . 
}

 

추천

출처www.cnblogs.com/Aiahtwo/p/11391017.html