社区讨论

神秘50分

P10379[GESP202403 七级] 俄罗斯方块参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mmgei06j
此快照首次捕获于
2026/03/07 22:10
3 天前
此快照最后确认于
2026/03/10 12:55
6 小时前
查看原帖
CPP
#include<bits/stdc++.h>
#define func(x,y) 1<=x&&x<=y
using namespace std;
int n,m,res;
int mp[510][510];
set<vector<int>>style;
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
vector<int>now;
void dfs(int x,int y,const int tx,const int ty,int ch)
{
	vector<int>res;
	res.push_back(tx-x);
	res.push_back(ty-y);
	mp[x][y]=0;
	for(int i=0;i<4;i++)
	{
		int nx=dx[i]+x;
		int ny=dy[i]+y;
		if(func(nx,n)&&func(ny,m)&&mp[nx][ny]==ch)
		{
			dfs(nx,ny,tx,ty,ch);
			for(auto v:now) 
				res.push_back(v);
		}
	}
	res.push_back(INT_MAX);
	now=res;
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
			scanf("%d",&mp[i][j]);
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			
			if(mp[i][j]==0)
				continue;
			dfs(i,j,i,j,mp[i][j]);
			style.insert(now);
		}
	}
	printf("%d",style.size());
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...