两个TLE怎么剪枝?

P1443 马的遍历

@[zhoukangyang](/space/show?uid=173660) 改成bfs
by 单曦增 @ 2019-04-24 17:39:14


广搜啊
by wxy_god @ 2019-04-24 17:39:34


~~IDA*~~
by Ireliaღ @ 2019-04-24 17:40:11


A*~~
by nofind @ 2019-04-24 18:42:21


~~打表~~
by dreagonm @ 2019-04-24 18:45:57


@[zhoukangyang](/space/show?uid=173660) 帮你改了一下。 ```cpp #include<bits/stdc++.h> using namespace std; int a[401][401]; const int DEP=1000; int n,m,sn,sm; int det[8][2] = {{2,1},{2,-1},{-2,1},{-2,-1},{-1,-2},{1,2},{1,-2},{-1,2}}; void dfs(int x,int y,int st) { if(st>DEP)return; a[x][y] = st; for(int i = 0; i < 8; i++) { int nx=x+det[i][0],ny=y+det[i][1]; if(nx <= 0 || nx > n)continue; if(ny <= 0 || ny > m)continue; if(a[nx][ny] != -1 && a[nx][ny] <= st+1)continue; dfs(nx,ny,st+1); } } int main() { memset(a,-1,sizeof(a)); scanf("%d%d%d%d",&n,&m,&sn,&sm); dfs(sn,sm,0); for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { printf("%-5d", a[i][j]); } printf("\n"); } return 0; } ```
by Smile_Cindy @ 2019-04-24 18:57:16


|