MLE80分求助
查看原帖
MLE80分求助
1003743
LSC_IS_SB楼主2023/11/20 19:31
#include<bits/stdc++.h>
using namespace std;

int n,m,b[405][405],p[405][405],x,y,c[10001],d[10001],e[10001],s;
int fx[16]={2,-2,2,-2,-1,1,-1,1},fy[16]={1,1,-1,-1,2,2,-2,-2};

void find(int d){
	if(e[d]!=-1)find(e[d]);
	s++;
}

int main(){
	cin>>n>>m>>x>>y;
    
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=m;j++)
		   b[i][j]=-1;
           
    b[x][y]=0;
    p[x][y]=true;
    int h=0,t=1;
    c[t]=x;
    d[t]=y;
    e[t]=-1;
    
    while(h<=t){
    	h++;
    	for(int i=0;i<8;i++){
    		x=c[h]+fx[i];
    		y=d[h]+fy[i];
    		if(x<=n&&x>=1&&y<=m&&y>=1&&!p[x][y]){
    			t++;
    			c[t]=x;
    			d[t]=y;
    			e[t]=h;
    			p[x][y]=true; 
    			s=0;
				find(t);
    			b[x][y]=s-1;
			}
		} 
	} 
    
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++)
		   cout<<b[i][j]<<"    ";
		cout<<endl;
	}
    
	return 0;    
} ```
2023/11/20 19:31
加载中...