请问该如何优化??
#include<bits/stdc++.h>
using namespace std;
int n,m,a,b,s[101][101],ans1=0,ans2=999999;
int xx[5]={0,1,-1,0,0},yy[5]={0,0,0,1,-1};
int mn[22][22],f[22][22],ma[22][22];
void dfs(int x,int y,int z){
if(z>ans2){
if(f[x][y]<ma[x][y])
return ;
}
if(x==1&&y==n){
if(z>ans1){
ans1=z;
memcpy(ma,f,sizeof(f));
}
if(z<ans2){
ans2=z;
memcpy(mn,f,sizeof(f));
}
return ;
}
for(int i=1;i<=4;i++)
if(s[x+xx[i]][y+yy[i]]==1&&x+xx[i]>=1&&x+xx[i]<=n&&y+yy[i]>=1&&y+yy[i]<=n){
s[x+xx[i]][y+yy[i]]=0;
z++; //要单独提出来++
f[x+xx[i]][y+yy[i]]=z;
dfs(x+xx[i],y+yy[i],z);
z--;
s[x+xx[i]][y+yy[i]]=1;
f[x+xx[i]][y+yy[i]]=0;
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
s[i][j]=1;
for(int i=1;i<=m;i++){
cin>>a>>b;
s[a][b]=0;
}
s[n][1]=0;
dfs(n,1,1);
cout<<ans1-ans2;
return 0;
}