41分WA
查看原帖
41分WA
407178
Huaji_King楼主2022/3/23 12:37
#include<bits/stdc++.h>
using namespace std;
int n,m,par[220][220],num[220][220],f,anss;
int xf[10]={0,-1, 0, 1, 0};
int yf[10]={0, 0, 1, 0,-1};
string s;
void HH(int x,int y,int f,int ans)
{
	anss=max(anss,ans);
	if(par[x+xf[f]][y+yf[f]]==0)
	{
		int f1=(f-1+4)%4;if(f1==0)f1=4;
		int x1=x+xf[f1],y1=y+yf[f1];
		if(x1>=1&&x1<=n&&y1>=1&&y1<=n&&par[x1][y1]==1&&num[x1][y1]==0)
		{
			num[x1][y1]=1;//cout<<"{"<<x1<<","<<y1<<">>";
			HH(x1,y1,f1,ans+1);
			num[x1][y1]=0;
		}
		
		int f2=(f+1+4)%4;if(f2==0)f2=4;
		int x2=x+xf[f2],y2=y+yf[f2];
		if(x2>=1&&x2<=n&&y2>=1&&y2<=n&&par[x2][y2]==1&&num[x2][y2]==0)
		{
			num[x2][y2]=1;//cout<<"{"<<x2<<","<<y2<<">>";
			HH(x2,y2,f2,ans+1);
			num[x2][y2]=0;
		}
	}
	else if(num[x+xf[f]][y+yf[f]]==0)
	{
		//cout<<x+xf[f]<<","<<y+yf[f]<<">>";
		num[x+xf[f]][y+yf[f]]=1;
		HH(x+xf[f],y+yf[f],f,ans+1);
		num[x+xf[f]][y+yf[f]]=0;
	}
	//else cout<<ans<<endl;
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        cin>>s;
        par[s[1]-'0'][s[0]-'A'+1]=1;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)par[i][j]=1-par[i][j];
    }
    num[1][1]=1;
    HH(1,1,2,1);
    HH(1,1,3,1);
    cout<<anss;
    return 0;
}

可能有点乱,谅解下

2022/3/23 12:37
加载中...