请问大佬们这样子为啥子就跑不出来呢》-《

P1002 [NOIP2002 普及组] 过河卒

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


|