讨论 / 能帮个忙找下错吗
all blue 2014-10-16 06:30:42
点我顶贴 收藏 删除
#include <set>

#include <map>

#include <queue>

#include <stack>

#include <math.h>

#include <string>

#include <vector>

#include <stdio.h>

#include <stdlib.h>

#include <iostream>

#include <limits.h>

#include <string.h>

#include <algorithm>

#include <functional>

using namespace std;

#define maxn 30

typedef long long ll;

ll n,m,x,y;

ll d[maxn][maxn];

ll dp(ll x,ll y)

{

if (d[x][y]>-1) return d[x][y];

if (x+1<=n&&y+1<=m){

d[x][y]=dp(x+1,y)+dp(x,y+1);

}

else

{

if (x+1<=n) d[x][y]=dp(x+1,y);

if (y+1<=m) d[x][y]=dp(x,y+1);

}

return d[x][y];

}

int main()

{

//freopen("in.txt","r",stdin);

//freopen("out.txt","w",stdout);

scanf("%I64d%I64d%I64d%I64d",&n,&m,&x,&y);

memset(d,-1,sizeof(d));

d[x][y]=0;d[n][m]=1;

if (x-2>=0&&y-1>=0) d[x-2][y-1]=0;

if (x-2>=0&&y+1<=m) d[x-2][y+1]=0;

if (x-1>=0&&y-2>=0) d[x-1][y-2]=0;

if (x-1>=0&&y+2<=m) d[x-1][y+2]=0;

if (x+1<=n&&y-2>=0) d[x+1][y-2]=0;

if (x+1<=n&&y+2<=m) d[x+1][y+2]=0;

if (x+2<=n&&y-1>=0) d[x+2][y-1]=0;

if (x+2<=n&&y+1<=m) d[x+2][y+1]=0;

printf("%I64d\n",dp(0,0));

return 0;

}

查看更多回复
提交回复