2021.5.26
走格子题目:给定一个数n,代表n*n的矩阵,问从(1,1)走到(n,n)总共有多少种方案
解题思路:递推,(1,1)的方案数为1,直接特殊处理,然后遍历所有格子,如果格子已经被计算过直接continue,否则每个格子的方案都为上面和左边格子的方案数相加,最后输出dp[n][n]的方案数即可
状态:dp[x][y]为到达(x,y)坐标时有多少方案数
转移dp[x][y]=dp[x-1][y]+dp[x][y-1]
代码实现:
#include<bits/stdc++.h>
using namespace std;
int dp[100][100]={0};
int main()
{
int n;cin>>n;
dp[1][1]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(dp[i][j])continue;
dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
}
cout<<dp[n][n];
return 0;
}