题目来源:码蹄集
题目描述:
Python代码实现:
m, n = map(int, input().split())
dp = [0] * (100005)
dp[0] = 0
dp[1] = 1
dp[2] = 2
for i in range(3, m * (n - 1) + 1):
dp[i] = dp[i - 1] + dp[i - 2]
print(dp[m * (n - 1)])
C++代码实现:
参考链接:https://yxsmarter.blog.csdn.net/article/details/128211350?spm=1001.2014.3001.5502
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll dp[100005]={0};
int main( )
{
int n,m;
cin>>m>>n;
dp[0] = 0;
dp[1] = 1,dp[2] = 2;
for(int i=3;i<=m*(n-1);i++) dp[i] = dp[i-1]+dp[i-2];
cout<<dp[m*(n-1)]<<'\n';
return 0;
}
Java代码实现:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int m = scanner.nextInt();
int n = scanner.nextInt();
long[] dp = new long[100005];
dp[0] = 0;
dp[1] = 1;
dp[2] = 2;
for (int i = 3; i <= m * (n - 1); i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
System.out.println(dp[m * (n - 1)]);
}
}
代码提交测试结果:
附B站老师思路讲解,可供参考:https://www.bilibili.com/video/BV1ih4y1x7su/?t=85.3