输入格式
一行四个数据,分别表示 BB 点坐标和马的坐标。
输出格式
一个数据,表示所有的路径条数。
参考:有帮助,望采纳!
//
#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;
}