AC,但过不了样例,求助
查看原帖
AC,但过不了样例,求助
1022075
peng_qian_xin楼主2024/6/23 09:41
#include<bits/stdc++.h>
using namespace std;

const int N = 500;
int a[N + 5][N + 5];
int vis[N + 5][N + 5];
int dx[5] = {0,0,1,0,-1},dy[5] = {0,1,0,-1,0};
int n,m,cnt = 0;
unordered_map<string,bool> mp;

void dfs(int x,int y,string &s)
{
	for(int i = 1;i <= 4;i++)
	{
		int tx = x + dx[i],ty = y + dy[i];
		if(tx >= 1 && tx <= n && ty >= 1 && ty <= n && !vis[tx][ty] && a[x][y] == a[tx][ty])
		{
			s += (char)('0' + i);
			vis[tx][ty] = 1;
			dfs(tx,ty,s);
		}
	}
	s += '5';
}

int main()
{
	cin >> n >> m;
	for(int i = 1;i <= n;i++)
	{
		for(int j = 1;j <= m;j++)
		{
			cin >> a[i][j];
		}
	}
	for(int i = 1;i <= n;i++)
	{
		for(int j = 1;j <= m;j++)
		{
			if(!vis[i][j])
			{
				string s = "";
				vis[i][j] = 1;
				dfs(i,j,s);
//				cout << s << endl;
				if(!mp[s]) cnt++;
				mp[s] = 1;
			}
		}
	}
	cout << cnt;
	return 0;
}
2024/6/23 09:41
加载中...