首页 > 其他分享 >南桥杯之穿越雷区

南桥杯之穿越雷区

时间:2024-04-07 19:01:04浏览次数:20  
标签:南桥 Qunue int nexty 穿越 front nextx 雷区 rear

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
char map[101][101];
int dir[4][2] = { -1,0,1,0,0,-1,0,1 };//某个点的四个方向
bool vist[101][101] = { false };//标记是否已访问
int Xa, Ya, Xb, Yb, N, ans;//记录A,B坐标和步数
struct node {
	int x, y;
}Qunue[10000];//利用辅助队列进行广度优先搜索
void establishmap()//输入图
{
	scanf("%d", &N);
	for (int i = 0; i < N; i++)
	{
		int j;
		for (j = 0; j < N; j++)
		{
			getchar();
			scanf("%c", &map[i][j]);
			if (map[i][j] == 'A')
			{
				Xa = i;
				Ya = j;
			}
			else if (map[i][j] == 'B')
			{
				Xb = i;
				Yb = j;
			}
		}
		map[i][j] = '\0';
	}
}
void bfs()
{
	int front = 0, rear = 0;
	Qunue[rear].x = Xa;//起点入队
	Qunue[rear].y = Ya;
	vist[Xa][Ya] = 1;//任何位置只要入队都要标记为已访问
	rear = (rear + 1) % 10000;//循环队列
	while (rear != front)//辅助队列进行广搜
	{
		int n = front;
		int m = rear;//记录某个点四周有多少个点
		for (int j = 0; j < m - n; j++)//某个点的四周,走完四周位为一步
		{
			int pushx = Qunue[front].x;
			int pushy = Qunue[front].y;//记录某个出队点的位置坐标
			front = (front + 1) % 10000;//对头指针环+1
			if (pushx == Xb && pushy == Yb)//找到直接返回
				return;
			for (int i = 0; i < 4; i++)//遍历四个方向
			{
				int nextx = pushx + dir[i][0];
				int nexty = pushy + dir[i][1];
				if (nextx < 0 || nextx >= N || nexty < 0 || nexty >= N)//越界 
					continue;
				if (vist[nextx][nexty])//已被访问 
					continue;
				if (map[nextx][nexty] == map[pushx][pushy])//同种磁场 
					continue;
				Qunue[rear].x = nextx;
				Qunue[rear].y = nexty;
				vist[nextx][nexty] = 1;//标记为访问
				rear = (rear + 1) % 10000; //队尾环比+1
			}
		}
		ans++;//走完一个点的四周,步数加一
	}
		ans = -1;	//队列为空,都还没有在上方返回,则不能到B点
}
int main(int argc, char* argv[])
{
	establishmap();//建图
	bfs();//广搜
	printf("%d", ans);
	return 0;
}

标签:南桥,Qunue,int,nexty,穿越,front,nextx,雷区,rear
From: https://blog.csdn.net/m0_73061507/article/details/137471282

相关文章

  • 每个程序员都应该了解的内存知识(一): 南桥&北桥&内存
    南桥&北桥&内存结构每个程序员都应该了解的内存知识.pdf-p5-每个程序员都应该了解的内存知识-P5-20240327103419​​功能每个程序员都应该了解的内存知识.pdf-p5-每个程序员都应该了解的内存知识-P5-20240327104347​​北桥主要是连接CPU以及RAM以及南桥,作为连......
  • Day51:WEB攻防-前后台功能点&文件下载&文件读取&文件删除&目录遍历&目录穿越
    目录文件安全-下载&读取&删除-案例黑白盒下载=读取文件删除目录安全-遍历&穿越-案例黑白盒目录遍历目录穿越知识点:1、文件安全-前后台功能点-下载&读取&删除2、目录安全-前后台功能点-目录遍历&目录穿越文件安全-下载&读取&删除-案例黑白盒1、下载=读取......
  • 南桥和北桥芯片主要区别是什么?
    原文链接:https://wenda.so.com/q/1453658846728011南桥主要是负责IO北桥用于CPU和内存、显卡、PCI交换数据2如何巧妙辨别南桥和北桥芯片?用功能辨别南桥芯片和北桥芯片:北桥它主要负责CPU与内存之间的数据交换,并控制AGP、PCI数据在其内部的传输,是主板性能的主要决定因素。随着芯......
  • 穿越地心,开启矿洞隧道漫游可视化之旅
    在这个充满好奇与探索的时代,我们总是渴望揭开世界的神秘面纱,探寻那些深藏在地球内部的奥秘。 矿洞隧道漫游可视化系统通过先进的计算机图形学、虚拟现实和三维建模技术,将矿洞隧道的真实场景进行高精度还原,让我们仿佛置身于一个充满奇幻色彩的地心世界。在这里,我们可以穿越曲折......
  • 穿越时空的沉浸式体验:红色教育基地漫游可视化
    在快节奏的现代社会,人们对于教育和休闲的追求愈发多元化。红色教育基地作为历史的见证者,承担着传承革命精神、弘扬社会主义核心价值观的重要使命。然而,传统的参观方式往往过于单调,难以让参观者在短时间内深入理解革命历史的内涵。正是基于这样的背景,山海鲸可视化基于自研的3D渲染......
  • 穿越时空,探索地球奥秘:3D地理展览馆的独特魅力
    在浩瀚的数字世界中,你是否曾渴望探寻那未曾踏足的秘境,感受大自然的鬼斧神工,或是追溯那遥远的文明印记?现在,山海鲸可视化为你揭开了这一奇幻的探索之旅。 置身山海鲸的世界,就如同手握一把神奇的钥匙,打开了通往无数奇景的大门。不同于传统的地图或展览馆,使用山海鲸可视化搭建的3D......
  • vivo何以穿越周期?
    经历了几年低迷期的徘徊,手机产业正在进入新的周期。谁,能成为新赢家?科技行业一直在快速迭代,能穿越产业周期的企业不是很多。从全球来看,很多PC时代、互联网时代的明星企业都已经陨落。手机产业更是迭代快、淘汰狠,过去二十年中,很多红极一时的品牌都已经黯然退场。在通信行业,一向低调的......
  • vivo何以穿越周期?
    经历了几年低迷期的徘徊,手机产业正在进入新的周期。谁,能成为新赢家?科技行业一直在快速迭代,能穿越产业周期的企业不是很多。从全球来看,很多PC时代、互联网时代的明星企业都已经陨落。手机产业更是迭代快、淘汰狠,过去二十年中,很多红极一时的品牌都已经黯然退场。在通信行业,一向低......
  • 穿越时空,体验城市之魅力:漫游展馆的无限可能
    在信息爆炸的时代,我们早已不满足于平面的、单一的展示方式。我们需要更加沉浸式的体验,更加直观地感受城市的发展与变迁。而山海鲸可视化正是这样一个绝佳的平台,让我们在走动间、在互动中,领略城市的魅力。 城市发展展馆漫游不仅仅是一个简单的展览,它运用最新的技术手段,将城市的......
  • 《2022雷军年度演讲全文:穿越人生低谷的感悟》
    参考:2022雷军年度演讲全文:穿越人生低谷的感悟首先,本次演讲我认为是相比以往很不一样的。雷军讲述了自己职业生涯三次低谷,以及面对人生挫折的复盘,可谓是干货满满。另外演讲的过程中不难看出,他的心中永远保持着梦想和热爱,即使过程并不顺利但依然坚持思考,乐观面对,这种力量是直击人心......