请哪位大佬给我康康为什么MLE
查看原帖
请哪位大佬给我康康为什么MLE
88339
罗小黑小鱼楼主2020/8/14 12:19
#include<bits/stdc++.h>
using namespace std;
int n,mi,mj,a[19999][19999];   //记录格子
bool up,down,r,l;//上下左右方向
int temp;
int nr;//当前数字
int i=1,j=1;
int main(){
	cin>>n>>mi>>mj;
	int k=1;
	nr=1;
	while(mi!=1&&mi!=n&&mj!=1&&mj!=n&&n-2>k){
		k++;
		nr+=4*n-4;
		n-=2;
		mi--;
		mj--;
		
	}//先缩图(不是图论那个缩点,只是一个优化)
	a[1][1]=nr;
	for(int i=0;i<=n+1;i++){
		for(int j=0;j<=n+1;j++){
			if(i==0||j==0||i==n+1||j==n+1) a[i][j]=0x7f7f;
		}
	}
	r=1;
	int flag=0;
	temp=n*n;
	while(temp!=0){
		if(flag) flag=0;
		else temp--;
		nr++;
		if(r==1) j++;
		if(l==1) j--;
		if(up==1) i--;
		if(down==1) i++;
		if(a[i][j]!=0){
			if(r==1) r=0,down=1,j--;
			else if(l==1) l=0,up=1,j++;
			     else if(up==1) up=0,r=1,i++;
					  else if(down==1) down=0,l=1,i--;
			nr--;
			flag=1;
		}
		else a[i][j]=nr;
	} 
	cout<<a[mi][mj]<<endl;
	return 0;
}

为什么要MLE

2020/8/14 12:19
加载中...