LeetCode 브러시 질문 | 개구리 점프 문제

질문 :
개구리는 한 번에 한 두 걸음 씩 뛸 수 있습니다. 개구리가 n 단계 단계에서 점프하는 총 점프 방법 수를 찾습니다.
답은 모듈로 1e9 + 7 (1000000007)이어야합니다. 계산의 초기 결과가 1000000008이면 1을 반환하십시오.

예 1 :

입력 : n = 2 출력 : 2

예 2 :

입력 : n = 7 출력 : 21

예 3 :

입력 : n = 0 출력 : 1

힌트 :
0 <= n <= 100
솔루션 1 : 피보나치 수열, f (n) = f (n-1) + f (n-2)

int numWays(int n)
{
    
    
	if (n == 1 || n == 0)
	{
    
    
		return 1;
	}
	else if (n == 2)
		return 2;
	else
	{
    
    
		int first = 1, second = 2, sum =  0;
		for (int i = 3; i <= n; i++)
		{
    
    
			sum = first + second;
			first = second % 1000000007;
			second = sum % 1000000007;
		}
		return sum % 1000000007;
	}
	
}

해결 방법 2 : 동적 프로그래밍

int numWays(int n)
{
    
    
	std::vector<int> dp;
	for (int i = 0; i <= n; i++)
	{
    
    
		if (i == 0 || i == 1)
			dp.push_back(1);
		else if (i == 2)
			dp.push_back(2);
		else
		{
    
    
			dp.push_back((dp[i - 1] + dp[i - 2]) % 1000000007);
		}	
	}
	return dp[n];
}

추천

출처blog.csdn.net/Gunanhuai/article/details/115290953