@[Fang_Junyi](/user/215713) 怀疑是 两个 int x 的问题
by xutongwei @ 2020-07-16 17:54:23
@[xutongwei](/user/223588)
```cpp
#include <cstdio>
#include <cstring>
long long f[25][25];
int n,m,x,y;
int d[2][9]={{0,-1,-2,-1,-2, 1, 2, 1, 2},
{0,-2,-1, 2, 1, 2, 1,-2,-1}};
bool In(int x_,int y_)
{
if(x_>=0 && y_>=0 && x_<=n && y_<=m)
return 1;
return 0;
}
int main()
{
scanf("%d%d%d%d",&n,&m,&x,&y);
for(int i=0;i<9;i++)
if(In(d[0][i]+x,d[1][i]+y))
f[d[0][i]+x][d[1][i]+y]=1;
for(int i=0;i<=n;i++)
for(int j=0;j<=m;j++)
if(f[i][j]!=0)
f[i][j]=0;
else if(i==0 || j==0)
f[i][j]=1;
else
f[i][j]=f[i-1][j]+f[i][j-1];
printf("%lld\n",f[n][m]);
return 0;
}
```
R35234389
不对
by 方俊懿 @ 2020-07-16 18:18:06
把马跳的位置赋值为1是什么意思?
by xutongwei @ 2020-07-16 18:19:40
这不是一条路线
by xutongwei @ 2020-07-16 18:20:13
@[Fang_Junyi](/user/215713)
by xutongwei @ 2020-07-16 18:20:20
标记,之后会赋回0。
by 方俊懿 @ 2020-07-16 18:22:50
```cpp
if(f[i][j]!=0)
f[i][j]=0;
```
by 方俊懿 @ 2020-07-16 18:23:34
@[Fang_Junyi](/user/215713) 应该是边界的问题……
如果第 0 行有“马的控制点”,那不可能一行都是 1
by xutongwei @ 2020-07-16 18:35:55
```cpp
if(f[i][j]!=0)//先判断是不是马的控制点
f[i][j]=0;
else if(i==0 || j==0)//再判断是不是在边界
f[i][j]=1;
else//最后在加
f[i][j]=f[i-1][j]+f[i][j-1];
```
by 方俊懿 @ 2020-07-16 18:42:07
不是……
by xutongwei @ 2020-07-16 18:46:23