比赛 搜索题... 评测结果 C
题目名称 跳马问题 最终得分 0
用户昵称 Vincent 运行时间 0.000 s
代码语言 C 内存使用 0.00 MiB
提交时间 2014-11-04 19:37:07
显示代码纯文本
#include <cstdio>
#include <cstring>
#define MAXN 30
using namespace std;

int f[MAXN][MAXN]={0};
int m,n;

int dp(int x,int y){
    if ( x<1|| y<1 || x>m || y>n) return 0;
    int &ans = f[x][y];
    if (ans!=-1) return ans;
    if (x==1 && y==1) ans=1;
    else ans=dp(x-1,y-2)+dp(x-2,y-1)+dp(x+1,y-2)+dp(x+2,y-1);
    return ans;
} 

int main(){
    freopen("horse.in","r",stdin);
    freopen("horse.out","w",stdout);
    scanf("%d%d",&m,&n);
    memset(f,-1,sizeof(f));
    printf("%d\n",dp(m,n));
    return 0;
}