0Tps DFS

P1443 马的遍历

~~tps是什么~~
by LiaoYF @ 2022-10-24 09:18:50


e····分数····
by Amano_Hina @ 2022-10-24 09:25:09


更新:3Wa+7TLE ```cpp #include <bits/stdc++.h> using namespace std; unsigned long long int gcd(unsigned long long int a,unsigned long long int b) { return b ? gcd(b,a%b) : a; } unsigned long long int lcm(unsigned long long int a,unsigned long long int b) { return a*b/gcd(a,b); } int n,m,x,y; int a[405][405]; bool f[405][405]; void dfs(int nowx,int nowy,int now) { if(nowx>n||nowx<=0||nowy>m||nowy<=0||(now>a[nowx][nowy]&&a[nowx][nowy]!=-1)) { }else{ a[nowx][nowy]=min(now,a[nowx][nowy]); if(a[nowx][nowy]==-1) { a[nowx][nowy]=now; } f[nowx][nowy]=1; dfs(nowx+1,nowy+2,now+1); dfs(nowx+1,nowy-2,now+1); dfs(nowx-1,nowy+2,now+1); dfs(nowx-1,nowy-2,now+1); dfs(nowx+2,nowy+1,now+1); dfs(nowx+2,nowy-1,now+1); dfs(nowx-2,nowy+1,now+1); dfs(nowx-2,nowy-1,now+1); } } int main() { std::ios::sync_with_stdio(0); cin.tie(0); cin>>n>>m>>x>>y; memset(a,-1,sizeof(a)); f[x][y]=0; dfs(x,y,0); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cout<<a[i][j]<<" "; } cout<<endl; } return 0; } ```
by Amano_Hina @ 2022-10-24 09:25:33


我用bfs做的,你也可以看看(c++党) ``` #include<bits/stdc++.h> using namespace std; queue<int> qx,qy; bool v[404][404]; int n,m,xx,yy,a[404][404]; const int dx[]={-2,-2,-1,-1,1,1,2,2}; const int dy[]={-1,1,-2,2,-2,2,-1,1}; void bfs(int x,int y) { v[x][y]=1; a[x][y]=0; qx.push(x); qy.push(y); while(!qx.empty()) { int nx=qx.front(); int ny=qy.front(); qx.pop(); qy.pop(); for(int i=0;i<8;i++) { int tx=nx+dx[i]; int ty=ny+dy[i]; if(tx<1||tx>n||ty<1||ty>m||v[tx][ty]) continue; a[tx][ty]=a[nx][ny]+1; v[tx][ty]=1; qx.push(tx); qy.push(ty); } } return; } int main() { scanf("%d%d%d%d",&n,&m,&xx,&yy); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) a[i][j]=-1; bfs(xx,yy); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) printf("%d ",a[i][j]); printf("\n"); } return 0; } ```
by melons_sundae @ 2022-10-24 10:13:51


|