[leetcode] Climbing Stairs(계단 오르기 C 언어)
2553 단어 leetcode
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? 제목: 네가 계단을 오르려면 n개의 계단을 올라가야 한다. 너는 매번 한 개의 계단을 올라갈 수도 있고 두 개의 계단을 올라갈 수도 있다. 몇 가지 방법으로 n개의 계단을 다 올라갈 수 있느냐.문제 풀이 사고방식: 1.반복으로 실현하면 한 계단을 오르는 것은 단지 한 가지 방식일 뿐이고 두 계단을 오르는 것은 두 가지 방식(한 번에 두 계단을 건너고 한 번에 한 계단을 건너면)이 있다. 그러면 F(n)=F(n-1)+F(n-2)이다.효율이 낮아서 함수를 호출할 때마다 많은 시간을 소모하고 실행할 때 시간을 초과한다.2. for순환문구로 직접 실현하고 개수조를 정의하여 계단을 오르는 방식을 보존하는데 사용한다. 귀속 사고방식과 마찬가지로 a[n]=a[n-1]+a[n-2]는 귀속보다 효율이 좋다.C 언어 구현 코드는 다음과 같습니다.
반복 구현:
int digui(int n){
if(n == 1){
return 1;
}
if(n == 2){
return 2;
}
return digui(n-1) + digui(n-2);
}
int climbStairs(int n) {
return digui(n);
}
for 루프 구현:
int climbStairs(int n) {
int i, a[999];
if(n == 1) return 1;
if(n == 2) return 2;
a[0] = 0;a[1] = 1;a[2] = 2;
for(i = 3;i <= n; i++){
a[i] = a[i-1] + a[i-2];
}
return a[n];
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
0부터 시작하는 LeetCode Day8 「1302. Deepest Leaves Sum」해외에서는 엔지니어의 면접에 있어서 코딩 테스트라고 하는 것이 행해지는 것 같고, 많은 경우, 특정의 함수나 클래스를 주제에 따라 실장한다고 하는 것이 메인이다. 빠른 이야기가 본고장에서도 행해지고 있는 것 같은 코...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.