o对啊
by Cedric_Cedris @ 2023-08-10 11:05:42
@[Cedric_Cedris](/user/1059487)
这是我修改后的方向数据,你可以对比一下
```
int dx[9]={0,-1,-2,-2,-1,1,2, 2, 1};
int dy[9]={0,-2,-1,1, 2,2,1,-1,-2};
```
by 编码落寞 @ 2023-08-10 11:05:58
@[编码落寞](/user/557751) 改了,但是只有40分
```
#include<bits/stdc++.h>
using namespace std;
const int maxN=8;
int dx[9]={0,-1,-2,-2,-1,1,2,2,1};
int dy[9]={0,-2,-1,1,2,2,1,-1,-2};
long long bx, by, mx, my, f[25][25];
long long dfs(int x,int y)
{
if(f[x][y])
{
return f[x][y];
}
if(x == 0 || y == 0)
{
return 1;
}
if(x < -2 || y < -2)
{
return 0;
}
for(int i = 0; i <= maxN; i++)
{
if(x == mx + dx[i] && y == my + dy[i])
{
return 0;
}
}
return f[x][y] = dfs(x - 1, y) + dfs(x, y - 1);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>bx>>by>>mx>>my;
cout<<dfs(bx, by);
return 0;
}
```
by Cedric_Cedris @ 2023-08-10 11:09:01
@[Cedric_Cedris](/user/1059487)
代码逻辑部分没太看懂
by 编码落寞 @ 2023-08-10 11:28:15
@[编码落寞](/user/557751) 额,不就是递推加记忆化吗
by Cedric_Cedris @ 2023-08-10 11:53:22
@[Cedric_Cedris](/user/1059487)
在你代码基础上改的
```
#include<bits/stdc++.h>
using namespace std;
const int maxN=8;
int dx[9]={0,-1,-2,-2,-1,1,2,2,1};
int dy[9]={0,-2,-1,1,2,2,1,-1,-2};
long long bx, by, mx, my, f[25][25];
long long dfs(int x,int y)
{
if(x < 0 || y < 0)
{
return 0;
}
if(f[x][y])
{
return f[x][y];
}
if(x == 0 && y == 0)
{
return 1;
}
for(int i = 0; i <= maxN; i++)
{
if(x == mx + dx[i] && y == my + dy[i])
{
return 0;
}
}
return f[x][y] = dfs(x - 1, y) + dfs(x, y - 1);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>bx>>by>>mx>>my;
cout<<dfs(bx, by);
return 0;
}
```
by 编码落寞 @ 2023-08-10 13:09:50
@[编码落寞](/user/557751) 感激不尽
by Cedric_Cedris @ 2023-08-10 17:47:52