dfs()函数没有定义
by Rieman_sum @ 2024-01-12 15:11:06
@[xiaoxiaoweizainuli](/user/1147148)
您没有定义 $\tt{dfs}$ 函数。
```cpp
#include<stdio.h>
int j = 0;
void dfs(int a,int b, int c,int d,int arr[21][21],int x,int y)
{
if (0 <= x && x <= 20 && 0 <= y && y <= 20)
{
if (x == a && y == b)
{
j++;
return ;
}
if (x + 1 <= 20 && ((x+1 - c) *(x+1 - c) + (y - d) *(y - d)) != 5 && arr[x + 1][y] == 0);
{
if (x + 1 == c && y == d)
{
return;
}
arr[x+1][y] = 1;
dfs(a, b, c, d, arr, x+1, y);
arr[x+1][y] = 0;
}
if (y +1<= 20 && ((x - c) *(x - c) + (y+1 - d) *(y+1 - d)) != 5 &&arr[x][y+1] == 0);
{
if (x == c && y + 1 == d)
{
return;
}
arr[x][y+1] = 1;
dfs(a, b, c, d, arr, x, y+1);
arr[x ][y+1] = 0;
}
}
}
int main()
{
int arr[21][21];
int x = 0;
int y = 0;//初始坐标
int a;
int b;
int c;
int d;
int i;
int k;
for (i = 0; i <= 20; i++)
{
for (k = 0; k <= 20; k++)
{
arr[i][k] = 0;
}
}
scanf("%d", &a);
scanf("%d", &b);//终点坐标
scanf("%d", &c);
scanf("%d", &d);//马的坐标
dfs(a, b, c, d, arr, x, y);
printf("%d", j);
}
```
但是用搜索会超时,这题正解应该是动规,可以用动规试试。
by fire_wolf @ 2024-01-12 20:43:32
@[fire_wolf](/user/690669) 感谢大佬,我这就去学学动规.
by xiaoxiaoweizainuli @ 2024-01-13 17:11:35
@[Guo1](/user/743879) 感谢大佬
by xiaoxiaoweizainuli @ 2024-01-13 17:11:55
这是C吗?C语言也得定义函数吧?:》
by Hgvuryg27 @ 2024-01-13 18:02:55
q**q**q**q**q**
by eastikun @ 2024-01-13 20:24:09