过河卒(Noip2002)

一本通 1314:【例3.6】过河卒(Noip2002)
我写的递推公式,不知道哪里错了,求指点一二。
#include"bits/stdc++.h"
using namespace std;
int a[30][30];//地图
int main()
{
// freopen("string.in","r",stdin);
// freopen("string.out","w",stdout);
int cx,cy;
int bx,by;
cin>>bx>>by>>cx>>cy;
a[cx][cy]=-1; //马走的地方
a[cx-1][cy+2]=-1;
a[cx+1][cy+2]=-1;
a[cx-2][cy+1]=-1;
a[cx-2][cy-1]=-1;
a[cx-1][cy-2]=-1;
a[cx+1][cy-2]=-1;
a[cx+2][cy+1]=-1;
a[cx+2][cy-1]=-1;
a[1][1]=1;
for(int i=2;i<=bx;i++)//边界 :行
{
if(a[i][1]!=-1) a[i][1]=a[i-1][1];
else a[i][1]=0;
}
for(int i=2;i<=by;i++)//边界 :列
{
if(a[1][i]!=-1) a[1][i]=a[1][i-1];
else a[1][i]=0;
}
for(int i=2;i<=bx;i++) //递推中间
{
for(int j=2;j<=by;j++)
{
if(a[i][j]!=-1) a[i][j]=a[i][j-1]+a[i-1][j];
else a[i][j]=0;
}
}

// for(int i=1;i<=bx;i++,cout<// {
// for(int j=1;j<=by;j++)
// {
// cout<// }
// }
cout<
// fclose(stdin);
// fclose(stdout);
return 0;
}