踩方格
来源:互联网 发布:淘宝上的拆散情侣方法 编辑:程序博客网 时间:2024/04/25 19:10
踩方格
问题描述
有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设:
a.每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;
c. 只能向北、东、西三个方向走;请问:如果允许在方格矩阵上走n步(n<=20),共有多少种不同的方案。2种走法只要有一步不一样,即被认为是不同的方案。
思路:
递归
从 (i,j) 出发,走n步的方案数,等于以下三项之和:
从(i+1,j)出发,走n-1步的方案数。前提:(i+1,j)还没走过
从(i,j+1)出发,走n-1步的方案数。前提:(i,j+1)还没走过
从(i,j-1)出发,走n-1步的方案数。前提:(i,j-1)还没走过
#include <iostream>#include <algorithm>#include <cstring>using namespace std;int visited[30][50];int ways(int i, int j, int n){ if(n==0) return 1; visited[i][j] = 1; int num =0; if( !visited[i+1][j] ) num += ways(i+1, j, n-1);//注意题设只能是北东西,所以此处为+1 if( !visited[i][j-1] ) num += ways(i, j-1, n-1); if( !visited[i][j+1] ) num += ways(i, j+1, n-1); visited[i][j] = 0; return num;}int main(){ int n; cin >> n; memset(visited, 0, sizeof(visited)); cout << ways(0, 25, n) <<endl; return 0;}
1 0
- 踩方格
- 踩方格
- 踩方格
- 踩方格
- 【openjudge】踩方格
- openjudge 踩方格
- codevs 4982 踩方格
- OPENJUDGE 4982 踩方格
- 16:踩方格
- 16:踩方格
- openjudge 4103 踩方格
- 16:踩方格
- 动态规划--踩方格
- 16:踩方格
- 动态规划:踩方格
- 4103:踩方格
- 4982:踩方格
- 百练4103 踩方格
- 堆和栈的区别(转过无数次的文章)
- 流媒体技术--学习一个新的领域
- 1004 成绩排名
- java原子操作实现原理
- 求n^n的最左边的数的值
- 踩方格
- 【Red5环境搭建】Red5插件安装
- HDU 1800 Flying to the Mars
- QT使用ROS自带的opencv新建使用OPENCV的QT工程(None ROS)
- CSS @media响应适布局
- python的画图的基本库
- UVa1587 盒子
- CSS_3th_div+CSS布局
- 2653 -- 【IOI 2001】移动电话 树状数组