[蓝桥杯 2020 省 AB1] 走方格

1|0题目描述

在平面上有一些二维的点阵。

这些点的编号就像二维数组的编号一样,从上到下依次为第 11 至第 n 行,从左到右依次为第 11 至第 m 列,每一个点可以用行号和列号来表示。

现在有个人站在第 11 行第 11 列,要走到第 n 行第 m 列。只能向右或者向下走。

注意,如果行号和列数都是偶数,不能走入这一格中。

问有多少种方案。

2|0输入格式

输入一行包含两个整数 n,m。

3|0输出格式

输出一个整数,表示答案。

4|0输入输出样例

输入 #1
3 4
输出 #1
2
复制代码
//第一遍搜索,直接爆了80分钟,最后一个点tle了,可恶,还是要dp,当我们的i,j均不为1的时候,就有i,j这个点的数量是从i-1,j和i,j-1的总和
#include<bits/stdc++.h> using namespace std; int n,m,res; bool vis[1010][1010]; void dfs(int x,int y) { if(x==n&&y==m) { res++; return; } vis[x][y]=true; if(x+1>n||x+1<=0||((x+1)%2==0&&y%2==0)) goto nexts; else dfs(x+1,y); nexts:; if(y+1>m||y+1<=0||(x%2==0&&(y+1)%2==0))goto xx; else dfs(x,y+1); xx:; vis[x][y]=false; return; } int main() { cin>>n>>m; dfs(1,1); cout<<res; return 0; } #include<bits/stdc++.h> using namespace std; int f[300][300],n,m; int main() { cin>>n>>m; f[1][1]=1; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(i%2==0&&j%2==0||(i==1&&j==1)) continue; else f[i][j]=f[i-1][j]+f[i][j-1]; cout<<f[n][m]; return 0; }
复制代码

 


__EOF__

本文作者Sakurajimamai
本文链接https://www.cnblogs.com/o-Sakurajimamai-o/p/17434718.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   o-Sakurajimamai-o  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
-- --
点击右上角即可分享
微信分享提示