蓝桥杯---走方格(dfs)

走方格

问题描述
在平面上有一些二维的点阵。这些点的编号就像二维数组的编号一样,从上到下依次为第 1 至第 n 行,从左到右依次为第 1 至第 m 列,每一个点可以用行号和列号来表示。现在有个人站在第 1 行第 1 列,要走到第 n 行第 m 列。只能向右或者向下走。注意,如果行号和列数都是偶数,不能走入这一格中。问有多少种方案。

输入格式
输入一行包含两个整数 n, m。

输出格式
输出一个整数,表示答案。

样例输入

3 4

样例输出

2

样例输入

6 6

样例输出

0

测试数据
对于所有评测用例,1 ≤ n ≤ 30, 1 ≤ m ≤ 30。
思路:dfs,dfs属于蓝桥杯常考知识点!!!
code:

#include<stdio.h>
#include<string.h> 
#define   INF    99
int ans=0;
int dir[2][2]={
    
    {
    
    0,1},{
    
    1,0}};
int M[INF][INF];
int n,m;

void dfs(int x,int y){
    
    
	if(x<1||y<1||x>m||y>n){
    
    
		return ;
	}
	if(x==m&&y==n){
    
    
		ans++;
	}
	
	for(int i=0;i<2;i++){
    
    
		int xx=x+dir[i][0];
		int yy=y+dir[i][1];
		
		if(xx%2==0&&yy%2==0){
    
    
			continue;
		}
		
		M[xx][yy]=1;
		dfs(xx,yy);
		M[xx][yy]=0;
	}
}

int main(){
    
    
	
	scanf("%d %d",&n,&m);
	memset(M,0,sizeof M);
	dfs(1,1);
	printf("%d",ans);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/timelessx_x/article/details/115008083
今日推荐