当前位置: 首页 > news >正文

总结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为横坐标&#xff0c;y为纵坐标 int s, f;//s为步数&#xff0c;//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 在包管理与模块化中的优势:与其他开发语言的比较

在开发复杂的、规模庞大的软件系统时&#xff0c;包管理和模块化设计起着至关重要的作用。它们不仅决定了代码的组织和可维护性&#xff0c;还直接影响到团队协作效率、扩展性和性能。在众多编程语言中&#xff0c;Java 凭借其成熟的生态系统、强类型系统和标准化的包管理机制&…...

LLMs(大型语言模型)的多智能体:Auto-GPT

LLMs(大型语言模型)的多智能体:Auto-GPT 是指在一个系统中集成多个具有不同能力、角色和任务的智能体,这些智能体能够相互协作、沟通和交互,以共同完成复杂的任务或解决复杂的问题。每个智能体都可以被视为一个独立的实体,具有自己的策略、目标和知识库,通过相互之间的…...

CPU狂飙900%如何分析?怎么定位?怎么溯源处理

当你的服务器CPU飙升到900%&#xff0c;系统卡顿、响应迟缓、业务受阻&#xff0c;这种令人焦虑的场景是否让你束手无策&#xff1f;别慌&#xff0c;这并不是世界末日&#xff0c;只要掌握正确的分析与定位方法&#xff0c;就能快速找到问题根源&#xff0c;并有效解决。 CPU…...

Excel 技巧17 - 如何计算倒计时,并添加该倒计时的数据条(★)

本文讲如何计算倒计时&#xff0c;并添加该倒计时的数据条。 1&#xff0c;如何计算倒计时 这里也要用公式 D3 - TODAY() 显示为下面这个样子的 然后右键该单元格&#xff0c;选 设置单元格格式 然后点 常规 这样就能显示出还书倒计时的日数了。 下拉适用到其他单元格。 2&a…...

Java中的阻塞队列--以LinkedBlockingQueue为例

顾名思义&#xff0c;就是一种在对队列进行出队或者入队操作的时候会阻塞的队列。下面使用JDK17中的LinkedBlockingQuece进行简单的介绍。 LinkedBlockingQueue基本结构 LinkedBlockingQueue的主要结构以及构成的数据结构如下图所示。具体来说包括 存储元素的链表&#xff0…...

16.5万煤气柜柜位计故障分析

一、事故经过&#xff1a; 2015年8月1&#xff14;日20点45分&#xff0c;16.5万立煤气柜柜顶油封溢流口有大量油液溢出&#xff0c;此时雷达柜位计在计算机上示值为63.79米&#xff0c;由于接近傍晚天色较暗&#xff0c;岗位操作员并未及时发现这一异常状况。22点45分左右&…...

高效沟通驱动LabVIEW项目成功

在LabVIEW项目开发中&#xff0c;由于涉及软件、硬件及多方协作&#xff0c;项目沟通效率的高低直接影响开发进度与最终质量。不明确的需求、信息传递中的误解以及跨部门协作的阻碍&#xff0c;常导致项目延误甚至失败。因此&#xff0c;建立高效的沟通机制&#xff0c;确保信息…...

大模型之三十三- 开源Melo 语音合成

大模型之三十三- 开源Melo 语音合成 文本到语音(TTS)系统从基于基础音素的模型演变成复杂的端到端神经方法,这种方法可以直接将文本转换为语音。这一变革得益于深度学习的进步和计算能力的提升,已经在语音的自然度、韵律控制和跨语言能力方面取得了重大进展 。现代TTS系统…...

论文复现:四轮转向车辆后轮转角控制方法研究

写在前面&#xff0c;主要参考以下这篇文章&#xff0c;并复现了其中几种后轮转角控制方法。 一、什么是四轮转向 顾名思义&#xff0c;四轮转向指的是四个轮子都能转向&#xff0c;都能转动。当驾驶员操作方向盘进行前轮转向时&#xff0c;后轮按照特定算法给出的转角跟着转动…...

【UFEN】基于多层特征融合和多任务学习的多模态情感分析

abstract 当前多模态情感分析面临的主要挑战包括&#xff1a;1、模型如何在单一模态中提取情感信息&#xff0c;并实现多模态信息的互补传输&#xff1b;2、在单一模态中体现的情绪与多模态标签不一致的情况下&#xff0c;如何输出相对稳定的预测&#xff1b;3、当单模态信息不…...

uniapp的插件开发发布指南

Hbuilder创建项目 项目根目录创建uni_modules 开发组件 发布到插件市场 填写发布说明&#xff08;未登录需要登录&#xff09; 点击提交 在终端可以看到 发布成功&#xff01; 插件市场查看...

【Linux系统】—— 编译器 gcc/g++ 的使用

【Linux系统】—— 编译器 gcc/g 的使用 1 用 gcc 直接编译2 翻译环境2.1 预处理&#xff08;进行宏替换&#xff09;2.2 编译&#xff08;生成汇编&#xff09;2.3 汇编&#xff08;生成机器可识别代码&#xff09;2.4 链接2.5 记忆小技巧2.6 编译方式2.7 几个问题2.7.1 如何理…...

[微服务]注册中心优化

环境隔离 企业实际开发中&#xff0c;往往会搭建多个运行环境&#xff0c;例如&#xff1a; 开发环境测试环境预发布环境生产环境 这些不同环境之间的服务和数据之间需要隔离。 还有的企业中&#xff0c;会开发多个项目&#xff0c;共享nacos集群。此时&#xff0c;这些项目…...

C++ ——— 模拟实现 vector 类

目录 vector 类的框架 无参数的构造函数 析构函数 获取有效数据个数 获取容量 重载 [] 运算符 可读可写版本 只可读版本 扩容 尾插 实现迭代器 可读可写版本 只可读版本 自定义设置size长度和内容 在任意位置插入 删除任意位置的数据 赋值重载 vector 类的框…...

大华相机DH-IPC-HFW3237M支持的ONVIF协议

使用libONVIF C库。 先发现相机。 配置 lib目录 包含 编译提示缺的文件&#xff0c;到libonvif里面拷贝过来。 改UDP端口 代码 使用msvc 2022的向导生成空项目&#xff0c;从项目的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洞察(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p39072 本报告合集洞察从多个维度全面解读微短剧行业。在行业发展层面&#xff0c;市场规模与用户规模双增长&#xff0c;创造大量高收入就业岗位并带动产业链升级。内容创作上&#xff0c;精品化、品牌化趋势凸显&#xff0c;题材走…...

PHP语言的数据库交互

PHP语言的数据库交互 引言 在现代Web开发中&#xff0c;数据库是存储和管理应用数据的重要组成部分。随着互联网的快速发展&#xff0c;网站和应用程序对数据存储和操作的需求变得越来越复杂。PHP作为一种广泛使用的服务器端脚本语言&#xff0c;提供了多种数据库交互的方法&…...

OpenClaw技能市场探秘:Phi-3-vision支持的十大实用插件

OpenClaw技能市场探秘&#xff1a;Phi-3-vision支持的十大实用插件 1. 为什么需要关注OpenClaw技能市场&#xff1f; 作为一个长期在自动化工具领域折腾的技术爱好者&#xff0c;我最初接触OpenClaw时&#xff0c;最吸引我的不是它的基础框架&#xff0c;而是它那个充满可能性…...

【仅限头部AI团队内部流通】Python智能内存策略白皮书V3.2:基于LLM驱动的动态内存预测模型实测报告

第一章&#xff1a;Python智能体内存管理策略安全性最佳方案概览Python智能体在高并发、长周期运行场景下面临内存泄漏、引用循环、敏感数据残留等安全风险。其内存管理机制虽以引用计数为主、辅以分代垃圾回收&#xff08;GC&#xff09;&#xff0c;但默认行为不足以保障智能…...

IceC:面向嵌入式平台的轻量级ICE兼容中间件

1. IceC&#xff1a;面向资源受限嵌入式平台的轻量级ZeroC ICE兼容中间件 1.1 设计定位与工程必要性 IceC并非ZeroC ICE的全功能移植&#xff0c;而是在AVR&#xff08;如ATmega328P&#xff09;和ESP8266等典型资源受限平台约束下&#xff0c;对ICE通信模型进行深度裁剪与重构…...

空间多组学三大算法实战:从cell2location定位到Hotspot富集,一站式解析组织微环境

1. 空间多组学分析工作流概览 空间多组学技术正在彻底改变我们对组织微环境的理解方式。想象一下&#xff0c;你手里同时握有单细胞转录组数据和空间转录组数据&#xff0c;就像同时拥有了食材清单和菜谱&#xff0c;但如何把这些原材料变成一道美味佳肴&#xff1f;这就是我们…...

Qwen2.5-7B-Instruct法律科技:合同审查要点+修改建议+合规风险等级评估

Qwen2.5-7B-Instruct法律科技&#xff1a;合同审查要点修改建议合规风险等级评估 1. 项目简介&#xff1a;智能法律助手的技术底座 Qwen2.5-7B-Instruct是阿里通义千问推出的旗舰级大模型&#xff0c;专门针对专业级文本交互场景深度优化。相比轻量版的1.5B和3B版本&#xff…...

还在手动拖动进度条整理长视频总结?2026年这4款AI视频总结工具,3分钟搞定1小时长片

我做内容创作快五年&#xff0c;光整理音视频素材这块&#xff0c;踩过的坑能绕办公桌三圈。之前天天手动拖进度条截重点&#xff0c;一小时长视频整理完大半天就没了。测了市面上十多款热门AI视频总结工具&#xff0c;我可以直接给结论&#xff1a;听脑AI是同类工具中最值得用…...

NCMDump:突破网易云音乐格式限制的开源解密工具

NCMDump&#xff1a;突破网易云音乐格式限制的开源解密工具 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 当你下载了喜爱的音乐却发现文件格式被加密&#xff0c;无法在其他设备播放时&#xff1b;当你想备份音乐收藏却受限于专有…...

我是木质拼装玩具的源头工厂,今天揭秘为什么大牌卖那么贵

大家好&#xff0c;我是达克熊玩具的负责人&#xff0c;也是安徽六安鑫龙木业的老板。做胶合板这一行&#xff0c;十几年了。这十几年里&#xff0c;我给无数品牌供过板材&#xff0c;看着一块块木板变成精美的拼装玩具&#xff0c;贴上大牌logo&#xff0c;价格翻几倍。今天不…...

个人开发者如何用隧道代理实现“代理自由”?

那个被反爬逼疯的周末去年有个周末&#xff0c;我窝在家里写一个比价脚本。想爬几个主流电商平台的价格数据&#xff0c;做个小工具自己用。代码写得挺顺&#xff0c;Requests库套上代理&#xff0c;循环跑起来。前50次请求一切正常&#xff0c;第51次——啪&#xff0c;403。换…...

ThinkPad风扇噪音终结者:TPFanCtrl2智能控温全攻略

ThinkPad风扇噪音终结者&#xff1a;TPFanCtrl2智能控温全攻略 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 如果你是ThinkPad用户&#xff0c;是否常被风扇频繁启停…...