采用DFS思想
将题目换一种方式描述就很简单了,就是给定一个N*M的方格,从方格的左上角走到右下角,只能横着走或者竖着走,不能往回走,求路径条数。由于题目给定的数据范围很小,4*5的方格,故用DFS简单求之,结果为35条。但当N、M>10之后,效率就下降得很厉害,需要换一种思路了。(见下方更新)
#include <stdio.h>
int path = 0;
#define endX 3
#define endY 4
void dfs(int x,int y)
{
if(x == endX && y == endY )
path++;
else{
if(x + 1 <= endX && y <= endY)
dfs(x+1, y);
if(x <= endX && y+1 <= endY)
dfs(x, y+1);
}
}
int main()
{
dfs(0,0);
printf("%d\n",path);
}