DFS(深度优先搜索)---踩方格
题目描述: 题目描述 有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设: a.每走一步时,只能从当前方格移动一格,走到某个相邻的方格上; b.走过的格子立即塌陷无法再走第二次; c.只能向北、东、西三个方向走; 请问:如果允许在方格矩阵上走n步,共有多少种不同的方案?(2种走法只要有一步不一样,即被认为是不同的方案) 输入 允许在方格上行走的步数n(n≤20)。 输出 计算出的方案数量 样例输入 2 样例输出 7 代码(DFS): # include <cstring> # include <iostream> using namespace std ; const int N = 20 ; //最大步数 int w [ N + 1 ] [ N + 1 ] ; int dfs ( int i , int j , int n ) { if ( n == 0 ) return 1 ; //没步数了,1种走法 else //还有步数可以走 { int m = 0 ; //重新计数(从当前位置到最后的步数) w [ i ] [ j ] = 1 ; //标记(为了保证当前路径不重复) if ( ! w [ i - 1 ] [ j ] ) m + = dfs ( i - 1 , j , n - 1 ) ; //北 if ( ! w [ i ] [ j - 1 ] ) m + = dfs (