为什么这样写 在洛谷网第一个测试点过不了

洛谷马拦过河卒
第一个测试点过不了

#include<iostream>
using namespace std;
long long horseroute[23][23];
long long soldierroute[23][23];
void horse(int x,int y)
{
    horseroute[x][y]=1;
    horseroute[x-2][y-1]=1;
    horseroute[x-2][y+1]=1;
    horseroute[x-1][y-2]=1;
    horseroute[x-1][y+2]=1;
    horseroute[x+1][y-2]=1;
    horseroute[x+1][y+2]=1;
    horseroute[x+2][y-1]=1;
    horseroute[x+2][y+1]=1;
 } 
 int main()
 {
     int bx,by,horsex,horsey;
     cin>>bx>>by>>horsex>>horsey;
     horse(horsex+1,horsey+1);
     soldierroute[1][1]=1;
     for(int i=1;i<=(bx+1);i++)
     {
         for(int j=1;j<=(by+1);j++)
         {
             if((horseroute[i][j]!=1)&&(soldierroute[i][j]==0))
             {
                 soldierroute[i][j]=soldierroute[i-1][j]+soldierroute[i][j-1];
}
         }
     }
     cout<<soldierroute[bx+1][by+1];
 }

我的解答思路和尝试过的方法
我想要达到的结果