请问这题怎么打c++

img
输入格式
一行四个数据,分别表示 BB 点坐标和马的坐标。

输出格式
一个数据,表示所有的路径条数。

参考:有帮助,望采纳!

C++过河卒问题-CSDN社区 求助 请问一下过河卒这道题目 这道题目我这样做问题出在哪?该怎么修改 https://bbs.csdn.net/topics/395633343?list=77873296

28、动态规划-洛谷p1002-过河卒问题-普及组 - 知乎 题目描述:棋盘上A点有一个过河卒,需要走到目标 B点。卒行走的规则:可以向下、或者向右。同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 … https://zhuanlan.zhihu.com/p/199006600


//
#include <bits/stdc++.h>
using namespace std;
int main (){
    int n,m,HN,HM;
    cin >>n>>m>>HN>>HM;
    long long s[n+1][m+1];
    
    for ( int i = 0 ; i <= m ; i++ ){
        for ( int j = 0 ; j <= n ; j++ ){
            s[j][i]=-1;
        }
    }
    
    s[HN][HM]=0;
    if ( HN-1>=0 && HM-2>=0 )
        s[HN-1][HM-2]=0;
    if ( HN-2>=0 && HM-1>=0 )
        s[HN-2][HM-1]=0;
    if ( HN+1<=n && HM+2<=m )
        s[HN+1][HM+2]=0;
    if ( HN+2<=n && HM+1<=m )
        s[HN+2][HM+1]=0;
    if ( HN-1>=0 && HM+2<=m )
        s[HN-1][HM+2]=0;
    if ( HN-2>=0 && HM+1<=m )
        s[HN-2][HM+1]=0;
    if ( HN+1<=n && HM-2>=0 )
        s[HN+1][HM-2]=0;
    if ( HN+2<=n && HM-1>=0 )
        s[HN+2][HM-1]=0;
        
    int F=0;
    for ( int i = 0 ; i <= m ; i++ ){
        if (s[0][i]==0){
            F=1;
        }
        if ( F==0 )     s[0][i]=1;
        if ( F==1 )     s[0][i]=0;
    }
    F=0;
    for ( int i = 1 ; i <= n ; i++ ){
        if (s[i][0]==0){
            F=1;
        }
        if ( F==0 )     s[i][0]=1;
        if ( F==1 )     s[i][0]=0;
    }
    
    
    for ( int i = 1 ; i <= m ; i++ ){
        for ( int j = 1 ; j <= n ; j++ ){
            if ( s[j][i]==-1 ){
                s[j][i]=s[j-1][i]+s[j][i-1];
            }
        }
    }
    cout <<s[n][m]<<endl;
    return 0;
}