蓝桥杯2020年A组省第七题:走方格

 第七题:走方格
题目描述
在平面上有一些二维的点阵。
这些点的编号就像二维数组的编号一样,从上到下依次为第1至第n行, 从左到右依次为第1至第m列,每一个点可以用行号和列号来表示。 现在有个人站在第1行第1列,要走到第n行第m列。只能向右或者向下走。
注意,如果行号和列数都是偶数,不能走入这一格中。
问有多少种方案?n,m不超过30

#include 
using namespace std;
int main(){
    int n,m;//输入的n与m
    int dp[31]][31];//题目说测试的n与m不超过30
    cin>>n>>m;
    memset(dp,0,sizeof(dp));//初始化整个数组
    
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(i%2==0&&j%2==0)
                dp[i][j]=0;
            else
                {
                    dp[i][j]=dp[i-1][j]+dp[i][j-1];//状态方程
                    dp[1][1]=1;
                }
        


    cout<

思路:没啥好讲的,动态规划就行。

每次的dp[i][j]=dp[i-1][j]+dp[i][j-1],边界是dp[1][1]=1;

当然当为偶数格就是x与y都为偶数的时候,次数为0。

然后每次元操作有个dp[1][1]=1,是为了保证边界为1,其余偶数边界为0。

你可能感兴趣的:(蓝桥杯比赛,蓝桥杯)