总结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;

}

学了点动态规划和 记忆化,并做了几道相关的题,练习分叉树相关题

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/5078.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

媒体新闻发稿价格怎么算?移动端发稿价格低的原因有哪些?

对于有过一定发稿经历的朋友&#xff0c;面对不同媒体新闻渠道的发稿价格肯定有所疑惑。尤其同一家媒体&#xff0c;移动端经常比网页端投放渠道的价格要低。到底有哪些方面的原因&#xff0c;导致了这一情况&#xff1f;就让小编来分享下自己的发稿经验。 一、内容展示效果 考…

【Linux系统编程】—— 从零开始实现一个简单的自定义Shell

文章目录 什么是自主shell命令行解释器&#xff1f;实现shell的基础认识全局变量的配置初始化环境变量实现内置命令&#xff08;如 cd 和 echo&#xff09;cd命令&#xff1a;echo命令&#xff1a; 构建命令行提示符获取并解析用户输入的命令执行内置命令与外部命令Shell的主循…

html,css,js的粒子效果

这段代码实现了一个基于HTML5 Canvas的高级粒子效果&#xff0c;用户可以通过鼠标与粒子进行交互。下面是对代码的详细解析&#xff1a; HTML部分 使用<!DOCTYPE html>声明文档类型。<html>标签内包含了整个网页的内容。<head>部分定义了网页的标题&#x…

.Net Core微服务入门系列(一)——项目搭建

系列文章目录 1、.Net Core微服务入门系列&#xff08;一&#xff09;——项目搭建 2、.Net Core微服务入门全纪录&#xff08;二&#xff09;——Consul-服务注册与发现&#xff08;上&#xff09; 3、.Net Core微服务入门全纪录&#xff08;三&#xff09;——Consul-服务注…

【JavaSE】(8) String 类

一、String 类常用方法 1、构造方法 常用的这4种构造方法&#xff1a;直接法&#xff0c;或者传参字符串字面量、字符数组、字节数组。 在 JDK1.8 中&#xff0c;String 类的字符串实际存储在 char 数组中&#xff1a; String 类也重写了 toString 方法&#xff0c;所以可以直…

Linux-C/C++--深入探究文件 I/O (下)(文件共享、原子操作与竞争冒险、系统调用、截断文件)

经过上一章内容的学习&#xff0c;了解了 Linux 下空洞文件的概念&#xff1b;open 函数的 O_APPEND 和 O_TRUNC 标志&#xff1b;多次打开同一文件&#xff1b;复制文件描述符&#xff1b;等内容 本章将会接着探究文件IO&#xff0c;讨论如下主题内容。  文件共享介绍&…

npm run dev 时直接打开Chrome浏览器

package.json 修改下配置 "scripts": {"dev": "vite --open chrome.exe",......}, "dev": "vite" 修改为 "dev": "vite --open chrome.exe" 这样方便一点&#xff0c;省得每次去点调试窗口的链接

微软预测 AI 2025,AI Agents 重塑工作形式

1月初&#xff0c;微软在官网发布了2025年6大AI预测&#xff0c;分别是&#xff1a;AI模型将变得更加强大和有用、AI Agents将彻底改变工作方式、AI伴侣将支持日常生活、AI资源的利用将更高效、测试与定制是开发AI的关键以及AI将加速科学研究突破。 值得一提的是&#xff0c;微…

《从入门到精通:蓝桥杯编程大赛知识点全攻略》(五)-数的三次方根、机器人跳跃问题、四平方和

本博客将详细探讨如何通过二分查找算法来解决这几个经典问题。通过几个实际的例子&#xff0c;我们将展示如何在这些问题中灵活应用二分查找&#xff0c;优化计算过程&#xff0c;并在面对大数据量时保持高效性。 目录 前言 数的三次方根 算法思路 代码如下 机器人跳跃问题…

微服务知识——4大主流微服务架构方案

文章目录 1、微服务聚合模式2、微服务共享模式3、微服务代理模式4、微服务异步消息模式 微服务是大型架构的必经之路&#xff0c;也是大厂重点考察对象&#xff0c;下面我就重点详解4大主流微服务架构方案。 1、微服务聚合模式 微服务聚合设计模式&#xff0c;解决了如何从多个…

麒麟操作系统服务架构保姆级教程(十三)tomcat环境安装以及LNMT架构

如果你想拥有你从未拥有过的东西&#xff0c;那么你必须去做你从未做过的事情 之前咱们学习了LNMP架构&#xff0c;但是PHP对于技术来说确实是老掉牙了&#xff0c;PHP的市场占有量越来越少了&#xff0c;我认识一个10年的PHP开发工程师&#xff0c;十年工资从15k到今天的6k&am…

游戏AI,让AI 玩游戏有什么作用?

让 AI 玩游戏这件事远比我们想象的要早得多。追溯到 1948 年&#xff0c;图灵和同事钱伯恩共同设计了国际象棋程序 Turochamp。之所以设计这么个程序&#xff0c;图灵是想说明&#xff0c;机器理论上能模拟人脑能做的任何事情&#xff0c;包括下棋这样复杂的智力活动。 可惜的是…

Golang的文件处理优化策略

Golang的文件处理优化策略 一、Golang的文件处理优化策略概述 是一门效率高、易于编程的编程语言&#xff0c;它的文件处理能力也非常强大。 在实际开发中&#xff0c;需要注意一些优化策略&#xff0c;以提高文件处理的效率和性能。 本文将介绍Golang中的文件处理优化策略&…

数据结构学习记录-队列

队列的基本概念 1、队列是操作受限的线性表 2、队头&#xff1a;允许删除的一端 3、队尾&#xff1a;允许插入的一端 4、空队列&#xff1a;不含任何元素的空表 5、特点&#xff1a;先进先出、FIFO 6、应用场景&#xff1a; 栈&#xff1a;解决括号匹配&#xff1b;逆波…

java知识框架

面试1 基础篇 如何理解OOP面向对象编程&#xff1f; 对现有事物进行抽象&#xff0c;具有继承、封装、多态的特征。 继承&#xff1a;从已有的类也就是父类进行继承信息。 封装&#xff1a;对数据和数据操作的方法绑定起来&#xff0c;通过方法进行访问或者操作数据。 多态…

JDBC实验测试

一、语言和环境 实现语言&#xff1a;Java。 环境要求&#xff1a;IDEA2023.3、JDK 17 、MySQL8.0、Navicat 16 for MySQL。 二、技术要求 该系统采用 SWING 技术配合 JDBC 使用 JAVA 编程语言完成桌面应用开发。 三、功能要求 某电商公司为了方便客服查看用户的订单信…

小程序获取微信运动步数

1、用户点击按钮&#xff0c;在小程序中触发getuserinfo方法&#xff0c;获取用户信息 <scroll-view class"scrollarea" scroll-y type"list"><view class"container"><button bind:tap"getLogin">获取</button&…

macOS 安装JDK17

文章目录 前言介绍新特性下载安装1.下载完成后打开downloads 双击进行安装2.配置环境变量3.测试快速切换JDK 小结 前言 近期找开源软件&#xff0c;发现很多都已经使用JDK17springboot3 了&#xff0c;之前的JDK8已经被替换下场&#xff0c;所以今天就在本机安装了JDK17&#…

Windows电脑桌面记录日程安排的提醒软件

在快节奏的现代生活中&#xff0c;工作效率成为了衡量个人能力的重要标准之一。然而&#xff0c;日常办公中常常会遇到各种琐事和任务&#xff0c;如果没有合理安排日程&#xff0c;很容易陷入混乱&#xff0c;导致效率低下。因此&#xff0c;做好日程安排对于日常工作至关重要…

MFC 使用 32位带Alpha通道的位图

最近需要做一个MFC界面上的图片,众所周知,MFC 好像只支持 bmp 格式的! 先看我的原始24位图片,RGB 三个颜色各占8位 (256色), 所以是24位。 如果放到MFC界面上,是这个很丑的效果 它是一个正方形图片,周围的白色可以看见。 解下来,进入今天的主题: 32位带 Alpha 通…