解题思路:
简单的dp问题,可以用dfs进行搜索,时间复杂度是2^n,使用记忆化搜索是n*m,dp就是简单化的记忆化搜索。
因为是只能向上和向右走,所以递推式为dp[i][j]=dp[i-1][j]+dp[i][j-1],第一行和第一列则只有一种情况,记为1,其它地方可能从左来也可能从下来,所以情况为两种相加。
参考代码:
#include <bits/stdc++.h> using namespace std; int dp[107][107]; int main () { int n,m; cin>>n>>m; for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { if(i==1||j==1)dp[i][j]=1; else dp[i][j]=dp[i-1][j]+dp[i][j-1]; } } cout<<dp[n][m]; return 0; }
0.0分
1 人评分
C二级辅导-同因查找 (C++代码)(42的倍数,,所以直接递加42输出)浏览:1091 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:779 |
printf基础练习2 (C++代码)(受教了,,%#o和%#x的用途)三人行,必有我师,,多看题解会有收获浏览:1873 |
C语言程序设计教程(第三版)课后习题8.1 (Java代码)浏览:774 |
【计算两点间的距离】 (C语言代码)浏览:879 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1135 |
IP判断 (C语言描述,蓝桥杯)浏览:1092 |
简单的a+b (C语言代码)浏览:478 |
Tom数 (C语言代码)浏览:492 |
生日日数 (C语言代码)浏览:1496 |