求助各位大佬,不管我怎么输入都只会输出0。
代码:
#include <bits/stdc++.h>
using namespace std;
int dir[8][2] = {{1,2},{2,1},{-1,2},{-2,1},{1,-2},{-2,1},{-1,-2},{-2,-1}};
int a[1000][1000];
int bx, by, hx, hy, ans = 0;
bool border = false;
void dp(int x, int y)
{
if (a[x][y] == -1) return;
a[x][y] = max(a[x + 1][y], 0) + max(a[x][y + 1], 0);
if (x != 0) dp(x - 1, y);
if (y != 0) dp(x, y - 1);
if (x == 0 and y == 0)
{
ans = a[0][0];
border = true;
}
if (border) return;
}
int main()
{
scanf("%d %d %d %d", &bx, &by, &hx, &hy);
a[hx][hy] = -1;
for (int i = 0; i <= 7; i++)
if (hx + dir[i][0] >= 0 and hy + dir[i][1] >= 0)
a[hx + dir[i][0]][hy + dir[i][1]] = -1;
a[bx][by] = 1;
dp(bx, by);
printf("%d", ans);
return 0;
}
对了,如果我犯了很基础的错误,请不要批评地太过严厉,谢谢!