시간 제한 : 일초
공간 제한 : 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 }