总结5..

#include<stdio.h>
struct nb {//结构体列队
int x, y;//x为横坐标,y为纵坐标
int s, f;//s为步数,//f为方向
}link[850100];
int n, m, x, y, p, q, f;
int hard = 1, tail = 1;
int a[52][52], b[52][52], book[52][52][91];
int main()
{
int i, j;
scanf("%d %d", &n, &m);//输入矩阵大小
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
scanf("%d", &a[i][j]);
for(i=1;i<n;i++)//特殊处理只有4个格子组成的正方形都为0,机器人才能通过
for (j = 1; j < m; j++)
{
if (a[i][j] == 0 && a[i][j + 1] == 0 && a[i + 1][j] == 0 && a[i + 1][j + 1] == 0)
b[i][j] = 0;
else
b[i][j] = 1;
}
scanf("%d %d %d %d", &x, &y, &p, &q);//输入起点,终点
getchar();
scanf("%c", &f);//起始朝向
if (x == p && y == q)//特判起点终点是否重合
{
printf("0");
return 0;
}
//起始点入队
link[tail].x = x; link[tail].y = y;
link[tail].s = 0;
if (f == 'E') link[tail].f = 1;//f=1表示东方向,2表示南,3表示西,4表示北
else if(f == 'S') link[tail].f = 2;
else if (f == 'W') link[tail].f = 3;
else link[tail].f = 4;
book[x][y][link[tail].f] = 1; tail++;
int flag = 0;//flag用于判断是否找到出口
//广搜核心代码
while (hard < tail)
{
//先广度搜索方向
for (i = 0; i <= 1; i++)
{
int tf;
if (i == 0)//0表示左转
{
tf = link[hard].f + 1;
if (tf == 5)
tf = 1;
}
else//右转
{
tf = link[hard].f - 1;
if (tf == 0)
tf = 4;
}
if (book[link[hard].x][link[hard].y][tf] == 0)//如果这个方向没有入队,进行入队操作
{
link[tail].x = link[hard].x;
link[tail].y = link[hard].y;
link[tail].s = link[hard].s + 1;
link[tail].f = tf;
book[link[hard].x][link[hard].y][tf] = 1;
tail++;
}
}
//广度搜索不同移动距离
for (i = 3; i >= 1; i--)
{
int tx, ty;
int fl = 0;//判断移动期间是否遇到障碍物,0为没有遇到
if (link[hard].f == 1)//link[hard].f大小不同移动方向不同
{
tx = link[hard].x;
ty = link[hard].y + i;
if (tx<1 || tx>n - 1 || ty<1 || ty>m - 1)//是否越界
continue;
for (j = link[hard].y + 1; j <= ty; j++)//判断是否遇到障碍物
{
if (b[tx][j] == 1)
{
fl = 1;
break;
}
}
}
else if (link[hard].f == 2)
{
tx = link[hard].x + i;
ty = link[hard].y;
if (tx<1 || tx>n - 1 || ty<1 || ty>m - 1)//是否越界
continue;
for (j = link[hard].x + 1; j <= tx; j++)//判断是否遇到障碍物
{
if (b[j][ty] == 1)
{
fl = 1;
break;
}
}
}
else if (link[hard].f == 3)
{
tx = link[hard].x;
ty = link[hard].y - i;
if (tx<1 || tx>n - 1 || ty<1 || ty>m - 1)//是否越界
continue;
for (j = link[hard].y - 1; j >= ty; j--)//判断是否遇到障碍物
{
if (b[tx][j] == 1)
{
fl = 1;
break;
}
}
}
else
{
tx = link[hard].x - i;
ty = link[hard].y;
if (tx<1 || tx>n - 1 || ty<1 || ty>m - 1)//是否越界
continue;
for (j = link[hard].x - 1; j >= tx; j--)//判断是否遇到障碍物
{
if (b[j][ty] == 1)
{
fl = 1;
break;
}
}
}
if (book[tx][ty][link[hard].f] == 0 && fl == 0)//如果这个点的这个方向第一次遇到且到这个点期间没有遇到障碍物
{
//入队操作+标记
link[tail].x = tx;
link[tail].y = ty;
link[tail].s = link[hard].s + 1;
link[tail].f = link[hard].f;
book[tx][ty][link[tail].f] = 1;
tail++;
if (tx == p && ty == q)//如果找到出口标记并提前结束
{
flag = 1;
break;
}
}
}
hard++;//一个点广搜完,判断下一个点
if (flag == 1)//找到出口,提前结束
break;
}
if (flag == 1)//找到输出最短时间
printf("%d", link[tail - 1].s);
else//没找到输出-1
printf("-1");
return 0;
}
n 个人围成一圈,从第一个人开始报数,数到 mm 的人出列,再由下一个人重新从 11 开始报数,数到 mm 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号
#include <stdio.h>
int main() {
int n, m;
scanf("%d %d", &n, &m);
int queue[1000];
// 初始化队列,将1到n的人放入队列
for (int i = 0; i < n; i++) {
queue[i] = i + 1;
}
int front = 0;
int rear = n;
while (front < rear) {
for (int i = 1; i < m; i++) {
queue[rear] = queue[front];
rear++;
front++;
}
printf("%d ", queue[front]);
front++;
}
return 0;
}
学了点动态规划和 记忆化,并做了几道相关的题,练习分叉树相关题
相关文章:
总结5..
#include<stdio.h> struct nb {//结构体列队 int x, y;//x为横坐标,y为纵坐标 int s, f;//s为步数,//f为方向 }link[850100]; int n, m, x, y, p, q, f; int hard 1, tail 1; int a[52][52], b[52][52], book[52][52][91]; int main() { …...
Java 在包管理与模块化中的优势:与其他开发语言的比较
在开发复杂的、规模庞大的软件系统时,包管理和模块化设计起着至关重要的作用。它们不仅决定了代码的组织和可维护性,还直接影响到团队协作效率、扩展性和性能。在众多编程语言中,Java 凭借其成熟的生态系统、强类型系统和标准化的包管理机制&…...
LLMs(大型语言模型)的多智能体:Auto-GPT
LLMs(大型语言模型)的多智能体:Auto-GPT 是指在一个系统中集成多个具有不同能力、角色和任务的智能体,这些智能体能够相互协作、沟通和交互,以共同完成复杂的任务或解决复杂的问题。每个智能体都可以被视为一个独立的实体,具有自己的策略、目标和知识库,通过相互之间的…...
CPU狂飙900%如何分析?怎么定位?怎么溯源处理
当你的服务器CPU飙升到900%,系统卡顿、响应迟缓、业务受阻,这种令人焦虑的场景是否让你束手无策?别慌,这并不是世界末日,只要掌握正确的分析与定位方法,就能快速找到问题根源,并有效解决。 CPU…...
Excel 技巧17 - 如何计算倒计时,并添加该倒计时的数据条(★)
本文讲如何计算倒计时,并添加该倒计时的数据条。 1,如何计算倒计时 这里也要用公式 D3 - TODAY() 显示为下面这个样子的 然后右键该单元格,选 设置单元格格式 然后点 常规 这样就能显示出还书倒计时的日数了。 下拉适用到其他单元格。 2&a…...
Java中的阻塞队列--以LinkedBlockingQueue为例
顾名思义,就是一种在对队列进行出队或者入队操作的时候会阻塞的队列。下面使用JDK17中的LinkedBlockingQuece进行简单的介绍。 LinkedBlockingQueue基本结构 LinkedBlockingQueue的主要结构以及构成的数据结构如下图所示。具体来说包括 存储元素的链表࿰…...
16.5万煤气柜柜位计故障分析
一、事故经过: 2015年8月14日20点45分,16.5万立煤气柜柜顶油封溢流口有大量油液溢出,此时雷达柜位计在计算机上示值为63.79米,由于接近傍晚天色较暗,岗位操作员并未及时发现这一异常状况。22点45分左右&…...
高效沟通驱动LabVIEW项目成功
在LabVIEW项目开发中,由于涉及软件、硬件及多方协作,项目沟通效率的高低直接影响开发进度与最终质量。不明确的需求、信息传递中的误解以及跨部门协作的阻碍,常导致项目延误甚至失败。因此,建立高效的沟通机制,确保信息…...
大模型之三十三- 开源Melo 语音合成
大模型之三十三- 开源Melo 语音合成 文本到语音(TTS)系统从基于基础音素的模型演变成复杂的端到端神经方法,这种方法可以直接将文本转换为语音。这一变革得益于深度学习的进步和计算能力的提升,已经在语音的自然度、韵律控制和跨语言能力方面取得了重大进展 。现代TTS系统…...
论文复现:四轮转向车辆后轮转角控制方法研究
写在前面,主要参考以下这篇文章,并复现了其中几种后轮转角控制方法。 一、什么是四轮转向 顾名思义,四轮转向指的是四个轮子都能转向,都能转动。当驾驶员操作方向盘进行前轮转向时,后轮按照特定算法给出的转角跟着转动…...
【UFEN】基于多层特征融合和多任务学习的多模态情感分析
abstract 当前多模态情感分析面临的主要挑战包括:1、模型如何在单一模态中提取情感信息,并实现多模态信息的互补传输;2、在单一模态中体现的情绪与多模态标签不一致的情况下,如何输出相对稳定的预测;3、当单模态信息不…...
uniapp的插件开发发布指南
Hbuilder创建项目 项目根目录创建uni_modules 开发组件 发布到插件市场 填写发布说明(未登录需要登录) 点击提交 在终端可以看到 发布成功! 插件市场查看...
【Linux系统】—— 编译器 gcc/g++ 的使用
【Linux系统】—— 编译器 gcc/g 的使用 1 用 gcc 直接编译2 翻译环境2.1 预处理(进行宏替换)2.2 编译(生成汇编)2.3 汇编(生成机器可识别代码)2.4 链接2.5 记忆小技巧2.6 编译方式2.7 几个问题2.7.1 如何理…...
[微服务]注册中心优化
环境隔离 企业实际开发中,往往会搭建多个运行环境,例如: 开发环境测试环境预发布环境生产环境 这些不同环境之间的服务和数据之间需要隔离。 还有的企业中,会开发多个项目,共享nacos集群。此时,这些项目…...
C++ ——— 模拟实现 vector 类
目录 vector 类的框架 无参数的构造函数 析构函数 获取有效数据个数 获取容量 重载 [] 运算符 可读可写版本 只可读版本 扩容 尾插 实现迭代器 可读可写版本 只可读版本 自定义设置size长度和内容 在任意位置插入 删除任意位置的数据 赋值重载 vector 类的框…...
大华相机DH-IPC-HFW3237M支持的ONVIF协议
使用libONVIF C库。 先发现相机。 配置 lib目录 包含 编译提示缺的文件,到libonvif里面拷贝过来。 改UDP端口 代码 使用msvc 2022的向导生成空项目,从项目的main示例拷贝过来。 CameraOnvif.h #pragma once#include <QObject> #include &l…...
【Java】常用工具类方法:树形结构、获取IP、对象拷贝、File相关、雪花算法等
1、生成子孙树 /*** 生成子孙树** param dataArray 遍历所有数据, 每个数据加到其父节点下* return 子孙树json*/public static JSONArray makeTree(JSONArray dataArray) {List<Map<String, Object>> data new ArrayList<>();for (int i 0; i < dataAr…...
豆瓣电影Top250的数据采集与可视化分析(scrapy+mysql+matplotlib)
文章目录 豆瓣电影Top250的数据采集与可视化分析(scrapy+mysql+matplotlib)写在前面数据采集(Visual Studio Code+Navicat)1.观察网页信息2.编写Scrapy代码(Visual Studio Code)2.1 创建Scrapy项目`doubanProject`2.2 创建爬虫脚本`douban.py`2.3 修改`douban.py`的代码2…...
2024微短剧行业生态洞察报告汇总PDF洞察(附原数据表)
原文链接: https://tecdat.cn/?p39072 本报告合集洞察从多个维度全面解读微短剧行业。在行业发展层面,市场规模与用户规模双增长,创造大量高收入就业岗位并带动产业链升级。内容创作上,精品化、品牌化趋势凸显,题材走…...
PHP语言的数据库交互
PHP语言的数据库交互 引言 在现代Web开发中,数据库是存储和管理应用数据的重要组成部分。随着互联网的快速发展,网站和应用程序对数据存储和操作的需求变得越来越复杂。PHP作为一种广泛使用的服务器端脚本语言,提供了多种数据库交互的方法&…...
OpenClaw技能市场探秘:Phi-3-vision支持的十大实用插件
OpenClaw技能市场探秘:Phi-3-vision支持的十大实用插件 1. 为什么需要关注OpenClaw技能市场? 作为一个长期在自动化工具领域折腾的技术爱好者,我最初接触OpenClaw时,最吸引我的不是它的基础框架,而是它那个充满可能性…...
【仅限头部AI团队内部流通】Python智能内存策略白皮书V3.2:基于LLM驱动的动态内存预测模型实测报告
第一章:Python智能体内存管理策略安全性最佳方案概览Python智能体在高并发、长周期运行场景下面临内存泄漏、引用循环、敏感数据残留等安全风险。其内存管理机制虽以引用计数为主、辅以分代垃圾回收(GC),但默认行为不足以保障智能…...
IceC:面向嵌入式平台的轻量级ICE兼容中间件
1. IceC:面向资源受限嵌入式平台的轻量级ZeroC ICE兼容中间件 1.1 设计定位与工程必要性 IceC并非ZeroC ICE的全功能移植,而是在AVR(如ATmega328P)和ESP8266等典型资源受限平台约束下,对ICE通信模型进行深度裁剪与重构…...
空间多组学三大算法实战:从cell2location定位到Hotspot富集,一站式解析组织微环境
1. 空间多组学分析工作流概览 空间多组学技术正在彻底改变我们对组织微环境的理解方式。想象一下,你手里同时握有单细胞转录组数据和空间转录组数据,就像同时拥有了食材清单和菜谱,但如何把这些原材料变成一道美味佳肴?这就是我们…...
Qwen2.5-7B-Instruct法律科技:合同审查要点+修改建议+合规风险等级评估
Qwen2.5-7B-Instruct法律科技:合同审查要点修改建议合规风险等级评估 1. 项目简介:智能法律助手的技术底座 Qwen2.5-7B-Instruct是阿里通义千问推出的旗舰级大模型,专门针对专业级文本交互场景深度优化。相比轻量版的1.5B和3B版本ÿ…...
还在手动拖动进度条整理长视频总结?2026年这4款AI视频总结工具,3分钟搞定1小时长片
我做内容创作快五年,光整理音视频素材这块,踩过的坑能绕办公桌三圈。之前天天手动拖进度条截重点,一小时长视频整理完大半天就没了。测了市面上十多款热门AI视频总结工具,我可以直接给结论:听脑AI是同类工具中最值得用…...
NCMDump:突破网易云音乐格式限制的开源解密工具
NCMDump:突破网易云音乐格式限制的开源解密工具 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 当你下载了喜爱的音乐却发现文件格式被加密,无法在其他设备播放时;当你想备份音乐收藏却受限于专有…...
我是木质拼装玩具的源头工厂,今天揭秘为什么大牌卖那么贵
大家好,我是达克熊玩具的负责人,也是安徽六安鑫龙木业的老板。做胶合板这一行,十几年了。这十几年里,我给无数品牌供过板材,看着一块块木板变成精美的拼装玩具,贴上大牌logo,价格翻几倍。今天不…...
个人开发者如何用隧道代理实现“代理自由”?
那个被反爬逼疯的周末去年有个周末,我窝在家里写一个比价脚本。想爬几个主流电商平台的价格数据,做个小工具自己用。代码写得挺顺,Requests库套上代理,循环跑起来。前50次请求一切正常,第51次——啪,403。换…...
ThinkPad风扇噪音终结者:TPFanCtrl2智能控温全攻略
ThinkPad风扇噪音终结者:TPFanCtrl2智能控温全攻略 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 如果你是ThinkPad用户,是否常被风扇频繁启停…...
