계단 (많은 수의 추가)

시간 제한 : 일초

공간 제한 : 65536k 나

눈앞에서 N 차 계단 경우에만 일차 또는 이차 밟을 수있다.
그것은 당신이 계단을 올라 사용할 수있는 방법을 여러 가지 방법으로 계산합니다.

설명을 입력합니다 :
양의 정수 N은 (N <= 100), 대역의 총 개수를 나타내는 계단

출력 설명 :
여러 가지 방법으로 계단을 올라 방법을 나타내는 양의 정수

입력 예 1 :
5

출력 예 1 :
8

아이디어 : 많은 수의 추가. 오래 오래 또한 오버 플로우.

1 #INCLUDE <iostream>
 2 #INCLUDE <벡터>
 3 #INCLUDE < 문자열 >
 4  이용한  스페이스 성병;
5  문자열 추가 ( 문자열 S1, 문자열 S2) {
 6      INT LEN1 s1.length = () = LEN2 s2.length ();
7      INT MAXLEN = 최대 (LEN1, LEN2) + 1 ;
8      문자열 RES (MAXLEN, ' 0 ' );
9      INT의 플래그 = 0 ;
10      의 INT I = LEN1 - 1, J = LEN2 - 1 , K = MAXLEN - 1 ;
11       (나는> = 0 && J> = 0 ; 난 ..., j-- ) {
 12          INT의 온도 = (S1 [I]는 - ' 0 ' ) + (S2 [J] - ' 0 ' ) + 플래그 ;
13          플래그 = 온도 / 10 ;
14          입술 [K - = 임시 % 10 + ' 0 ' ;
(15)      }
 (16)      동안 은 (i> = 0 ) {
 17          INT의 온도 = S1 [난 -] -' 0 ' + 플래그;
18          플래그 = 온도 / 10 ;
19          입술 [k-- = 임시 % 10 + ' 0 ' ;
20      }
 21      동안 (j> = 0 ) {
 22          INT의 온도 = S2 [j--] - ' 0 ' + 플래그;
23          플래그 = 온도 / 10 ;
24          입술 [k-- = 임시 % 10 + ' 0 ' ;
25      }
 26     입술 [K] + = 플래그가 ' 0 ' ;
27 일      경우 (플래그) {
 28          반환 입술;
29      } 다른 {
 30          반환 res.substr ( 1 );
31      }
 32  }
 33  문자열 jumpFloor ( INT의 번호) {
 34      벡터 < 문자열 > DP (번호 + 1 , " 1 " );
(35)      에 대한이 ( 값 int = I를 2 ] 난 <= 번호; 내가 ++ ) {
 36         DP [I] = 추가 (DP [I - 1 ] DP [I - 2 ]);
37      }
 38      리턴 DP [수];
39  }
 40  
41  INT의 주 () {
 42      INT N;
43      CIN >> N; 
44      COUT jumpFloor << (N) << ENDL;
45 }

 

추천

출처www.cnblogs.com/qinduanyinghua/p/11440864.html