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

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

#include <bits/stdc++.h>
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[n][m];

}

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值