返回题解分享
讨论 / 题解分享/ 帖子详情

走方格(编程题) - 题解

#include <bits/stdc++.h>
using namespace std;
const int N=1010;
int n,m;
int g[N][N],mem[N][N];
int dx[]={1,0};
int dy[]={0,1};

int dfs(int x,int y){
    if(mem[x][y]) return mem[x][y];
    if(x==1&&y==1) return 1;
    int sum=0;
    if(g[x-1][y]) sum+=dfs(x-1,y);
    if(g[x][y-1]) sum+=dfs(x,y-1);
    return mem[x][y]=sum;
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(i%2||j%2){
                
                //1可以走,0不可以走
                g[i][j]=1;
            }
        }
    }
    if(n%2==0&&m%2==0) cout<<"0"<<endl;
    else cout<<dfs(n,m)<<endl;
    return 0;
}
0 回复 0 转发 0 喜欢 7 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!