4103:踩方格

转载请注明出处:http://www.cnblogs.com/zhishoumuguinian/p/8416488.html

总时间限制: 
1000ms
 
内存限制: 
65536kB
描述

有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设:
a.    每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;
b.    走过的格子立即塌陷无法再走第二次;
c.    只能向北、东、西三个方向走;
请问:如果允许在方格矩阵上走n步,共有多少种不同的方案。2种走法只要有一步不一样,即被认为是不同的方案。

输入
允许在方格上行走的步数n(n <= 20)
输出
计算出的方案数量
样例输入
2
样例输出
  7
 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 int flag[30][50]={0};
 6 int dfs(int x, int y, int n)
 7 {
 8     if(n==0) return 1;
 9     int num=0;
10     flag[x][y]=1;
11     if(!flag[x][y-1]) num+=dfs(x,y-1,n-1);
12     if(!flag[x][y+1]) num+=dfs(x,y+1,n-1);
13     if(!flag[x+1][y]) num+=dfs(x+1,y,n-1);
14     flag[x][y]=0;
15     return num;
16 }
17 
18 int main()
19 {
20     int n;
21     cin>>n;
22     cout<<dfs(0,25,n);
23 }

 

posted @ 2018-02-05 10:28  nefuer  阅读(134)  评论(0)    收藏  举报