80TL蒟蒻求助(想不到怎么优化了)
  • 板块P1683 入门
  • 楼主Augensterm
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/7/28 21:05
  • 上次更新2023/11/3 07:09:34
查看原帖
80TL蒟蒻求助(想不到怎么优化了)
774592
Augensterm楼主2023/7/28 21:05
#include<bits/stdc++.h>
using namespace std;
int n,m;
int stx,sty;
int cnt=1;
char a[25][25];
short dir[4][2]={{0,-1},{-1,0},{0,1},{1,0}};
bool vis[25][25];//用于回溯 
bool vis1[25][25];//用于判断cnt加不加 
void dfs(int x,int y)
{
	for(int i=0;i<4;i++)
	{
		int nx=x+dir[i][0];
		int ny=y+dir[i][1];
		if(a[nx][ny]=='.'&&vis[nx][ny]==0)
		{
			vis[nx][ny]=1;
			if(vis1[nx][ny]==0)
				cnt++;
			vis1[nx][ny]=1;
			dfs(nx,ny);
			vis[nx][ny]=0;
		} 
	}
	return;
}
int main()
{
	cin>>m>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		{
			cin>>a[i][j];
			if(a[i][j]=='@')
				stx=i,sty=j;
		}
			
	vis[stx][sty]=1;
	dfs(stx,sty);
	cout<<cnt;
	return 0;
}

2023/7/28 21:05
加载中...