求调(悬关)
  • 板块灌水区
  • 楼主FanFan_Sister
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/17 22:28
  • 上次更新2023/11/2 13:09:23
查看原帖
求调(悬关)
227998
FanFan_Sister楼主2023/10/17 22:28
#include<bits/stdc++.h>
using namespace std;
int n,b;
int a[121][121];
int ans;
int dx[]={0,1,-1,0},
	dy[]={1,0,0,-1};
bool bo[121][121];
void dfs(int x,int y,int id,int f)
{
	int x1=dx[f]+x;
	int y1=dy[f]+y;
	if(bo[x1][y1]==1) return;
	if(x1<=0||y1<=0||x1>n||y1>n||a[x1][y1]==1)
	{
		bool flag=true;
		for(int i=0;i<4;i++)
		{
			int x2=x+dx[i];
			int y2=y+dy[i];
			if(x2<=0||y2<=0||x2>n||y2>n||a[x2][y2]==1||bo[x2][y2]==1) continue;
			bo[x2][y2]=1;
			dfs(x2,y2,id+1,i);
			flag=false;
			bo[x2][y2]=0;
		}
		if(flag)
		{
			ans=max(ans,id);
			return;
		}
	}
	bo[x1][y1]=1;
	dfs(x1,y1,id+1,f);
	bo[x1][y1]=0;
	return;
}
int main()
{
	scanf("%d%d",&n,&b);
	for(int i=1;i<=b;i++)
	{
		string s;
		cin>>s;
		a[(int)(s[0])-'A'+1][s[1]-'0']=1;
	}
	bo[1][1]=1;
	dfs(1,1,1,0);
	dfs(1,1,1,1);
	dfs(1,1,1,2);
	dfs(1,1,1,3);
	printf("%d",ans);
	return 0;
}

P1560 就对了两个点

2023/10/17 22:28
加载中...