90分 1TLE(99我)
  • 板块P1443 马的遍历
  • 楼主Ctox
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/10 19:54
  • 上次更新2024/7/10 21:29:23
查看原帖
90分 1TLE(99我)
1060753
Ctox楼主2024/7/10 19:54
#include<bits/stdc++.h>
using namespace std;
int m,n,x,y,s[500][500],a[500][500],dy[8]={2,2,1,1,-2,-2,-1,-1},dx[8]={1,-1,2,-2,1,-1,2,-2};
void f(int q,int k,int z){
	s[q][k]=z;
	for(int i=0;i<8;i++){
		if((a[q+dx[i]][k+dy[i]]==0||s[q+dx[i]][k+dy[i]]>z+1)&&q+dx[i]<=n&&k+dy[i]<=m&&q+dx[i]>0&&k+dy[i]>0){
			a[q+dx[i]][k+dy[i]]=1;
			f(q+dx[i],k+dy[i],z+1);
		}
	}
}
int main(){
	cin>>n>>m>>x>>y;
	a[x][y]=1;
	for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) s[i][j]=99999;
	f(x,y,0);
	s[x][y]=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(s[i][j]==99999) printf("%-5d",-1);
			else printf("%-5d",s[i][j]);
		}
		cout<<endl;
	}
	return 0;
}

dfs 90分 1TLE 求大佬指点**_ _


(本蒟蒻不会剪枝)

2024/7/10 19:54
加载中...