广搜--(搜索的第一道题)图像有用区域

点这里点击打开链接

今天开始迈出了学习广搜的第一步,因为之前感觉搜索很难理解都没有固定的模式,但是觉得现在又到了不得不面对的时刻。一开始想用递归写的,就是想在外围加上1,然后就遍历一下如果不是0的就让它的递归它的四周,看看是否不是0;最后看了一下别人的思路,就换成了队列来写

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;

int map[1000][1500];
int n, m;
int dir[4][2] = {{0, 1}, {0, -1}, {-1, 0}, {1, 0}}; //上下左右
queue<int>que;

void BFS(int i, int j)
{
	int x, y;
	int a, b;
	que.push(i);
	que.push(j);
	while(!que.empty())
	{
		x = que.front();
		que.pop();
		y = que.front();
		que.pop();
		for(int i = 0; i < 4; ++i)
		{
			a = x + dir[i][0];
			b = y + dir[i][1];
			if(a < 0 || b < 0 || a > n + 1 || b >m + 1) //超边界
				continue;
			if(map[a][b] == 0)
				continue;
			map[a][b] = 0;
			que.push(a);
			que.push(b);
		}
	}
}

int main()
{
	int ncase;
	scanf("%d", &ncase);
	while(ncase--)
	{
		while(!que.empty())
			que.pop();
		scanf("%d%d", &m, &n);
		for(int i = 0; i <= m + 1; ++i) //用来时周围加上1;
		{
			map[0][i] = 1;
			map[n + 1][i] = 1;
		}
		for(int i = 0; i <= n + 1; ++i)
		{
			map[i][0] = 1;
			map[i][m + 1] = 1;
		}
		for(int i = 1; i <= n; ++i)
			for(int j = 1; j <=m; ++j)
				scanf("%d", &map[i][j]);
		BFS(0, 0);
		for(int i = 1; i <=n; ++i)
		{
			for(int j = 1; j <= m; ++j)
		        printf("%d ",map[i][j]);
		    printf("\n");
		}
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目:– JavaScript 中的患者数据管理系统 患者数据管理系统是为医院开发的 node JS 项目。通过使用此系统,您可以轻松访问患者数据,它具有成本效益,可改善患者护理和数据安全性。不仅如此,它还减少了错误范围。在运行项目之前,您需要下载 node.js。 这个患者数据管理项目包含 javascript、node.js 和 CSS。我们必须让服务器监听端口 3000,并使用 JSON 在客户端和服务器之间交换数据。这个项目会不断询问您有关插件更新的信息,因此请保持互联网畅通。此系统允许您执行 crud 操作。在这里,您是系统的管理员。您还可以添加所需的员工人数。此外,您还可以更新患者记录。该系统功能齐全且功能齐全。 要运行此项目,您需要在计算机上安装NodeJS并使用现代浏览器,例如 Google Chrome、  Mozilla Firefox。ReactJS项目中的此项目可免费下载源代码。有关项目演示,请查看下面的图像滑块。 对于手动安装 1.将主项目文件夹解压到任意目录 2.从 cmd 设置项目目录的路径 3. 输入命令“npm install” 4.完成后输入命令“npm start” 5.现在,您将获得一个 localhost:portnumber,并转到该 URL 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值