看不懂 根本看不懂
by Zhengyunshu @ 2024-04-27 20:59:23
你为什么不用深搜?
by lizhaixiang @ 2024-04-28 14:23:58
@[liangsefengjing](/user/1125914) 建议发到题目总版
还有你可以看看我的代码:
```cpp
#include<iostream>
using namespace std;
long f[22][22]={};//记录答案
int ctrl[22][22]={},n,m,hx,hy;//ctrl 记录马的控制点
int d[9][2]={{0,0},{1,2},{1,-2},{-1,2},{-1,-2},{2,1},{2,-1},{-2,1},{-2,-1}};//马的控制点
int main(){
cin>>n>>m>>hx>>hy;
for(int c=0;c<9;c++){
int tmpx=hx+d[c][0],tmpy=hy+d[c][1];
if(0<=tmpx&&tmpx<=n&&0<=tmpy&&tmpy<=m){
ctrl[tmpx][tmpy]=1;
}
}f[0][0]=1-ctrl[0][0];
for(int c=0;c<=n;c++){
for(int _c=0;_c<=m;_c++){
if(ctrl[c][_c])continue;
if(c!=0)f[c][_c]+=f[c-1][_c];
if(_c!=0)f[c][_c]+=f[c][_c-1];
}
}cout<<f[n][m];
}
```
by xd244 @ 2024-04-28 21:37:47
我也有```
#include<iostream>
using namespace std;
const int fx[9]={0,-2,-1,1,2,2,1,-1,-2};
const int fy[9]={0,1,2,2,1,-1,-2,-2,-1};
int main()
{
long long n,m,x,y; cin>>n>>m>>x>>y;
long long v[n+1][m+1];
for(int i=0;i<=n;++i)//初始化棋盘
for(int j=0;j<=m;++j)
v[i][j]=1;
for(int i=0;i<=8;++i)//标记马及其控制点
if(fx[i]+x>=0 && fy[i]+y>=0 && fx[i]+x<=n && fy[i]+y<=m)
v[fx[i]+x][fy[i]+y]=0;
for(int i=0;i<=n;++i)//递推遍历棋盘
for(int j=0;j<=m;++j)
{
if((i==0 && j==0)||v[i][j]==0) continue;
if(i==0) v[i][j]=v[i][j-1];
else if(j==0) v[i][j]=v[i-1][j];
else v[i][j]=v[i-1][j]+v[i][j-1];
}
cout<<v[n][m];
return 0;
}
```
by CDW20110412 @ 2024-04-30 17:46:04