CODEVS 1010过河卒
来源:互联网 发布:淘宝一件代发怎么加入 编辑:程序博客网 时间:2024/05/16 02:09
#include<iostream>#include<string.h>using namespace std;int n,m,x,y,f[25][25],vis[25][25];int d(int a,int b){d(a,b)表示从(0,0)到(a,b)的路径总数,所以逆向递归,只能向上或向左 if(f[a][b]>=0) return f[a][b]; else if(a==0&&b==0) return 1;//走到终点总数加一 else{ int j=0,k=0; if(a-1>=0&&vis[a-1][b]!=1) j=d(a-1,b);//判断是否合法,向上 if(b-1>=0&&vis[a][b-1]!=1) k=d(a,b-1);//判断是否合法,向左 return f[a][b]=(j+k); }}int main(){ memset(f,-1,sizeof(f)); //初值不能赋0!!! freopen("1010.in","r",stdin); freopen("1010.out","w",stdout); cin>>n>>m>>x>>y; vis[x][y]=1;//标记马控制的9个位置,包括马自己!!! if(x+1<=n&&y-2>=0) vis[x+1][y-2]=1; if(x+2<=n&&y-1>=0) vis[x+2][y-1]=1; if(x+2<=n&&y+1<=m) vis[x+2][y+1]=1; if(x+1<=n&&y+2<=m) vis[x+1][y+2]=1; if(x-1>=0&&y-2>=0) vis[x-1][y-2]=1; if(x-2>=0&&y-1>=0) vis[x-2][y-1]=1; if(x-2>=0&&y+1<=m) vis[x-2][y+1]=1; if(x-1>=0&&y+2<=m) vis[x-1][y+2]=1; cout<<d(n,m); return 0;}
题解:记忆化搜索,d(a,b)表示从(0,0)到(a,b)的路径总数
0 0
- 【Codevs】1010 过河卒
- 【codevs 1010】过河卒
- CODEVS 1010过河卒
- CODEVS 1010 过河卒
- codevs 1010 过河卒 dfs
- DFS练习-codevs-1010过河卒
- 【codevs】p1010 过河卒
- CODEVS 1010 过河卒(棋盘型DP)
- Codevs 1010 过河卒== 洛谷 1002
- Codevs 1010 过河卒 2002年NOIP全国联赛普及组
- Codevs 1105 过河
- 【codevs 1730】青蛙过河
- Wikioi-1010-过河卒
- 【wikioi】1010 过河卒
- wikioi 1010 过河卒
- 1010 过河卒
- 1010 过河卒
- 1010 过河卒
- Linux批量重命名文件方法
- Oracle 11g Create Logical Standby
- Caffe 整理
- 第十周 项目三-用二叉树遍历思想解决问题
- php的生命周期
- CODEVS 1010过河卒
- 模态型和非模态型子窗口的使用及区别
- LeetCode No.233 Number of Digit One
- 聊一聊HTML5的表单,话说这些表单你都用过吗?
- MapReduce实现线性回归
- WSL是什么? Windows Subsystem for Linux (WSL)
- 【备忘】用树莓派3做无线路由器
- Git详解之一 Git起步
- 命名样例