CF-Robot Factory

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int N=1010;
int a[N][N];
bool t[N][N];
int n,m;
int dx[]={0,1,0,-1};
int dy[]={-1,0,1,0};
vector<int>x;
int dfs(int x,int y)
{
	int sum=1;
	t[x][y]= true;
	for(int k=0;k<4;k++)
	{
		int i=x+dx[k],j=y+dy[k];
	    if(!t[i][j]&&(a[x][y]>>k&1)!=1&&i>0&&i<=n&&j>0&&j<=m)sum+=dfs(i,j)//,t[x][y]=true;
	}
	return sum;
}
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(!t[i][j])
			x.push_back(dfs(i,j));
                        //t[i][j]=true;
		}
	}
	sort(x.begin(),x.end());
	reverse(x.begin(),x.end());
	for(int i=0;i<x.size();i++)
	{
		cout<<x[i]<<" ";
	}
	return 0;
}
注意一下在递归前标记所走过的路径和&的优先级小于!=




全部评论

相关推荐

沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
11-27 12:36
已编辑
门头沟学院 前端工程师
Apries:这个阶段来说,很厉害很厉害了,不过写的简历确实不是很行,优势删掉吧,其他的还行
点赞 评论 收藏
分享
11-30 11:07
河南大学 Java
宇宙厂 测开 n*15
丘丘给个offer:有后选后
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务