站外题,玄关
  • 板块题目总版
  • 楼主l_615
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/9/30 15:04
  • 上次更新2023/11/2 16:58:49
查看原帖
站外题,玄关
622724
l_615楼主2023/9/30 15:04

qwq

#include<bits/stdc++.h>
using namespace std;
int fx[4]={1,-1,0,0};
int fy[4]={0,0,-1,1};
int a[30][30],w[30],n,m;
char c[30][30];
void print()
{
	for(int i=1;i<=26;i++)
	{
		if(w[i]==1)
		{
			printf("%c ",i+'A'-1);
		}
	}printf("\n");
}
void dfs(int x,int y,int t)
{
	w[c[x][y]-'A'+1]=1;
	a[x][y]=t;
	for(int i=0;i<4;i++)
	{
		int tx=x+fx[i];
		int ty=y+fy[i];
		if(tx>0&&tx<=n&&ty>0&&ty<=m&&w[c[tx][ty]-'A'+1]!=1&&t+1>=a[tx][ty])
		{
//			print();
			dfs(tx,ty,++t);
			t--;
		}
	}
	w[c[x][y]-'A'+1]=0;
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>c[i][j];
		}
	}

//	for(int i=1;i<=n;i++)
//	{
//		for(int j=1;j<=m;j++)
//		{
//			cout<<c[i][j];
//		}
//		cout<<endl;
//	}
	dfs(1,1,1);
	int maxn=-1;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
//			printf("%2d",a[i][j]);
			maxn=max(maxn,a[i][j]);
		}
//		printf("\n");
	}
	printf("%d",maxn);
}
2023/9/30 15:04
加载中...