20分 2,3 AC,其余TLE.求大佬帮助
查看原帖
20分 2,3 AC,其余TLE.求大佬帮助
490826
上杉越楼主2022/1/21 15:33
#include<bits/stdc++.h>
#define I int
using namespace std;
I ss[405][405],n,m,a,b;
bool sa[405][405];
void sb(I x,I y,I s){
	if(x<1||y<1||x>n||y>m)return ;
	else{
		if(ss[x][y]>s&&ss[x][y]!=-1)ss[x][y]=s;
		else if(ss[x][y]==-1)ss[x][y]=s;
		if(sa[x+1][y+2]!=1&&x+1<=n&&y+2<=m){
			sa[x][y]=1;
			sb(x+1,y+2,s+1);
			sa[x][y]=0;
		}
		if(sa[x-1][y+2]!=1&&x-1>=1&&y+2<=m){
			sa[x][y]=1;
			sb(x-1,y+2,s+1);
			sa[x][y]=0;
		}
		if(sa[x+1][y-2]!=1&&x+1<=n&&y-2>=1){
			sa[x][y]=1;
			sb(x+1,y-2,s+1);
			sa[x][y]=0;
		}
		if(sa[x-1][y-2]!=1&&x-1>=1&&y-2>=1){
			sa[x][y]=1;
			sb(x-1,y-2,s+1);
			sa[x][y]=0;
		}
		if(sa[x+2][y+1]!=1&&x+2<=n&&y+1<=m){
			sa[x][y]=1;
			sb(x+2,y+1,s+1);
			sa[x][y]=0;
		}
		if(sa[x+2][y-1]!=1&&x+2<=n&&y-1>=1){
			sa[x][y]=1;
			sb(x+2,y-1,s+1);
			sa[x][y]=0;
		}
		if(sa[x-2][y+1]!=1&&x-2>=1&&y+1<=m){
			sa[x][y]=1;
			sb(x-2,y+1,s+1);
			sa[x][y]=0;
		}
		if(sa[x-2][y-1]!=1&&x-2>=1&&y-1>=1){
			sa[x][y]=1;
			sb(x-2,y-1,s+1);
			sa[x][y]=0;
		}
	}
}
int main(){
	cin>>n>>m>>a>>b;
	memset(ss,-1,sizeof(ss));
	sb(a,b,0);
	for(I i=1;i<=n;i++){
		for(I j=1;j<=m;j++)
			printf("%-5d",ss[i][j]);
		cout<<'\n';
	}
	return 0;
}
2022/1/21 15:33
加载中...