python 동적 기획 알고리즘 실례 상세
피보나치 수열에서 동적 계획을 보다
피보나치 수열: Fn = Fn-1 + Fn-2 (n = 1, 2 fib (1) = fib (2) = 1)
연습: 피보나치 수열의 n항을 풀기 위해 귀속과 비귀속 방법을 사용한다
코드는 다음과 같습니다.
# _*_coding:utf-8_*_
def fibnacci(n):
if n == 1 or n == 2:
return 1
else:
return fibnacci(n - 1) + fibnacci(n - 2)
print(fibnacci(10)) # 55
위의 애매모호한 설명을 이해하지 못하면 다음과 같은 직관적인 코드가 있다.
f(1) = 1
f(2) = 1
f(3) = f(1) + f(2) = 1+ 1 = 2
f(4) = f(3) + f(2) = 2 + 1 = 3
...
f(n) = f(n-1) + f(n-2)
인스턴스 확장:계단을 오르다
만약 네가 계단을 오르고 있다면, n계단이 있어야만 옥상에 도착할 수 있다
매번 너는 한두 개의 계단을 올라갈 수 있다.너는 몇 가지 다른 방법으로 옥상까지 올라갈 수 있니?
주의: 주어진 n은 정수입니다.
예:
예 1:
입력: 2
출력: 2
설명: 옥상까지 올라갈 수 있는 두 가지 방법이 있다.
1.1 단계 + 1 단계
2.2 단계
예 2:
입력: 3
출력: 3
설명: 옥상까지 올라갈 수 있는 세 가지 방법이 있다.
1.1 단계 + 1 단계 + 1 단계
2.1 단계 + 2 단계
3.2 단계 + 1 단계
확인:
만약 두 가지 예시를 특별히 잘 보지 못한다면 당신은 계단을 0으로 할 수 있다. 그러면 계단을 오르는 방법은 0가지가 필연이다. 계단이 1이면 계단을 오르는 방법은 1가지밖에 없다.
4 계단:
입력: 4
출력: 4
1.1 단계 + 1 단계 + 1 단계 + 1 단계
2.2 단계 + 2 단계
3.1 단계 + 2 단계 + 1 단계
4.2 단계 + 1 단계 + 1 단계
5.1 단계 + 1 단계 + 2 단계
그럼
계단수 계단 오르기 방법
0 0
1 1
2 2
3 3
4 5
...
잘 안 보일 것 같으면 5 단계, 6 단계를 추리해 보시면...
n계단을 오르고 싶을 때 p(n-1)+p(n-2)p를 계단을 오르는 방법으로 얻을 수 있다
class Solution:
def climbStairs(self, n: int) -> int:
num_list = [0,1,2]
if n==1:
return num_list[1]
elif n==2:
return num_list[2]
else:
for i in range(3,n+1):
num_list.append(num_list[i-1]+num_list[i-2])
print(num_list)
return num_list[n]
obj = Solution()
result = obj.climbStairs(10)
print(result)
리코드를 제출한 사람은 12.72% 에 불과했다.최적화를 통해
class Solution:
def climbStairs(self, n: int) -> int:
a,b,c = 0,1,2
if n == 1:
return b
if n == 2:
return c
while n>0:
c = a + b
a,b = b,c
n -= 1
return c
obj = Solution()
result = obj.climbStairs(8)
이쯤에서python 동적 기획 알고리즘의 실례에 대한 상세한 설명을 드리겠습니다. 더 많은python 동적 기획 알고리즘이 어떤 내용인지 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.