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

总结3..

 #include<stdio.h>

int n,m;

int a[1002][1002];

int b[1002][1002];//判断该空的八连通图是否被走过 

int gg=0; 

int dd=0; 

int xz[8]={-1,-1,-1,0,0,1,1,1},yz[8]={-1,0,1,-1,1,-1,0,1};//八个方向 

void dfs(int x,int y)

{

 int dx,dy;

 for(int i=0;i<8;i++)

 {

   dx=x+xz[i];

   dy=y+yz[i];

  if(dx>=0&&dx<n&&dy>=0&&dy<m&&a[dx][dy]==0&&b[dx][dy]==0)

  {

   b[dx][dy]=1;

   dfs(dx,dy);

  }

 }

}

void ww(int x,int y)

{

 for(int i=0;i<8;i++)

 {

 int p=x+xz[i];

 int q=y+yz[i];

 if(p>=0&&p<n&&q>=0&&q<m&&a[p][q]!=-1)

 a[p][q]++; 

 }

}

int ff(int x,int y)

{

 for(int i=0;i<8;i++)

 {

  int xx=x+xz[i];

     int yy=y+yz[i];

   if(xx>=0&&xx<n&&yy>=0&&yy<m&&a[xx][yy]==0)

   return 0;

 } 

 return 1;

 

int main()

{

 int hh;

 scanf("%d %d",&n,&m);

 for(int i=0;i<n;i++)

 {

  for(int j=0;j<m;j++)

  {

   scanf("%d",&a[i][j]);

   if(a[i][j]==1)

   a[i][j]=-1;

  }

 }

 for(int i=0;i<n;i++)

 {

  for(int j=0;j<m;j++)

  {

  if(a[i][j]==-1)

  ww(i,j); 

  } 

 }

 for(int i=0;i<n;i++)

 {

  for(int j=0;j<m;j++)

  {

   if(a[i][j]!=0&&a[i][j]!=-1&&ff(i,j)) 

   dd++;

  } 

 } 

 for(int i=0;i<n;i++)

 {

  for(int j=0;j<m;j++)

  {

   if(a[i][j]==0&&b[i][j]==0)

   {

    gg++;

    dfs(i,j);

   }

  }

 }

 printf("%d",gg+dd);

 return 0;

}

 #include <stdio.h>

#include <string.h>

// 定义全局变量n和m,分别表示地图的行数和列数

// b数组用于标记每个位置是否已经被访问过,初始化为0表示未访问

// x1, y1, x2, y2 分别用于记录起点(Y)和终点(M)的坐标

int n, m, b[203][203] = {0}, x1, y1, x2, y2;

// 定义方向数组d,用于表示上下左右四个方向的偏移量

// 分别是向右(0, 1),向下(1, 0),向左(-1, 0),向上(0, -1)

int d[4][2] = { {0, 1}, {1, 0}, {-1, 0}, {0, -1}};

// 字符数组a用于存储地图信息

char a[203][203];

 

// 定义队列结构体,包含横坐标dx和纵坐标dy

struct queue {

    int dx;

    int dy;

} q[50000];

 

// 广度优先搜索函数,从坐标(x, y)开始进行搜索

// c数组用于记录从起点到各个位置的步数

void bfs(int x, int y, int c[][203]) {

    // 初始化队列的头指针f和尾指针r,f指向队列头部,r指向队列尾部的下一个位置

    int f = 0, r = 1;

    // 将起始点的坐标存入队列

    q[1].dx = x;

    q[1].dy = y;

    // 标记起始点已经被访问过

    b[x][y] = 1;

    // 当队列不为空时,进行循环

    while (f < r) {

        // 取出队列头部的点,头指针后移

        f++;

        // 计算当前位置下一步的步数,是当前位置的步数加1

        int s = c[q[f].dx][q[f].dy] + 1;

        // 尝试向四个方向进行扩展

        for (int i = 0; i < 4; i++) {

            // 计算扩展后的新坐标

            int nx = q[f].dx + d[i][0];

            int ny = q[f].dy + d[i][1];

            // 判断新坐标是否在地图范围内,且未被访问过,并且不是障碍物('#')

            if (nx >= 0 && nx < n && ny >= 0 && ny < m && b[nx][ny] == 0 && a[nx][ny] != '#') {

                // 将新点加入队列,尾指针后移

                r++;

                // 标记新点已经被访问过

                b[nx][ny] = 1;

                // 将新点的坐标存入队列

                q[r].dx = nx;

                q[r].dy = ny;

                // 记录新点到起点的步数

                c[nx][ny] = s;

            }

        }

    }

}

 

int main() {

    // 当成功读取到地图的行数n和列数m时,进入循环

    while (scanf("%d %d", &n, &m) == 2) {

        // 读取地图的每一行信息

        for (int i = 0; i < n; i++) {

            scanf("%s", a[i]);

        }

        // 遍历地图,找到起点(Y)和终点(M)的坐标

        for (int i = 0; i < n; i++) {

            for (int j = 0; j < m; j++) {

                // 如果当前位置是起点(Y),记录其坐标

                if (a[i][j] == 'Y') x1 = i, y1 = j;

                // 如果当前位置是终点(M),记录其坐标

                else if (a[i][j] == 'M') x2 = i, y2 = j;

            }

        }

        // 定义两个二维数组c1和c2,分别用于记录从起点和终点到各个位置的步数,初始化为0

        int c1[203][203] = {0}, c2[203][203] = {0};

        // 重置访问标记数组b,将所有位置标记为未访问

        memset(b, 0, sizeof(b));

        // 从起点开始进行广度优先搜索,记录起点到各个位置的步数

        bfs(x1, y1, c1);

        // 再次重置访问标记数组b

        memset(b, 0, sizeof(b));

        // 从终点开始进行广度优先搜索,记录终点到各个位置的步数

        bfs(x2, y2, c2);

        // 初始化最小步数为一个较大的值

        int min = 100000;

        // 遍历地图,找到所有目标点('@'),并计算从起点和终点到该点的步数之和

        for (int i = 0; i < n; i++) {

            for (int j = 0; j < m; j++) {

                // 如果当前位置是目标点('@'),并且当前步数之和小于最小步数,且步数之和不为0

                if (a[i][j] == '@' && (min > c1[i][j] + c2[i][j]) && (c1[i][j] + c2[i][j])) {//标记那处非常关键

                    // 更新最小步数

                    min = c1[i][j] + c2[i][j];

                }

            }

        }

        // 输出最小步数乘以11的结果

        printf("%d\n", min * 11);

    }

    return 0;

}

 

#include<stdio.h>

int n,k,a[25]={0},cnt=0;

int p(int num){

 int z=1;

 if(num<2)z=0;

 for(int i=2;i*i<=num;i++){

  if(num%i==0){

   z=0;

   break;

  }

 }

 return z;

}

void dfs(int f,int num,int sum){

 if(num==0){

  if(p(sum))cnt++;

  return ;

 }

 if(n-f+1<num)return;

 for(int i=f;i<=n;i++){

  dfs(i+1,num-1,sum+a[i]);

 }

}

int main()

{

 scanf("%d %d",&n,&k);

 for(int i=1;i<=n;i++){

  scanf("%d",&a[i]);

 }

 dfs(1,k,0);

 printf("%d\n",cnt);

 return 0;

}

今天在洛谷练了几道搜索题,无习巩固了队列和站的相关知识点,回顾了一下归并算法和快速排序法

 

相关文章:

总结3..

#include<stdio.h> int n,m; int a[1002][1002]; int b[1002][1002];//判断该空的八连通图是否被走过 int gg0; int dd0; int xz[8]{-1,-1,-1,0,0,1,1,1},yz[8]{-1,0,1,-1,1,-1,0,1};//八个方向 void dfs(int x,int y) { int dx,dy; for(int i0;i<8;i) { …...

信息奥赛一本通 1168:大整数加法

这道题是一道大整数加法&#xff0c;涉及到高精度的算法&#xff0c;比如说有两个数要进行相加&#xff0c;1111111111111111111111111111111111111112222222222222222222222222222222&#xff0c;那么如果这两个数很大的话我们常用的数据类型是不能进行计算的&#xff0c;那么…...

3.3 OpenAI GPT-4, GPT-3.5, GPT-3 模型调用:开发者指南

OpenAI GPT-4, GPT-3.5, GPT-3 模型调用:开发者指南 OpenAI 的 GPT 系列语言模型,包括 GPT-4、GPT-3.5 和 GPT-3,已经成为自然语言处理领域的标杆。无论是文本生成、对话系统,还是自动化任务,开发者都可以通过 API 调用这些强大的模型来增强他们的应用。本文将为您详细介…...

横盘出击的三种经典走势形态,买点以及需要注意的问题技术详解

龙头股在横盘整理过程中&#xff0c;也会出现几种不同的形态&#xff0c;比如矩形整理形态&#xff0c;或者在某一趋势线下方运行。 第一种形态&#xff1a;突破横盘趋势线 突破横盘趋势线时识别横盘龙头启动的关键点位。股价经过一段时间的横盘后&#xff0c;突然出现快速上…...

处理没有提示的字符串、计算相隔天数应用题

正常情况下&#xff0c;小云每天跑 1 千米。如果某天是周一或者月初&#xff08;1 日&#xff09;&#xff0c;为了激励自己&#xff0c;小云要跑 2 千米。如果同时是周一或月初&#xff0c;小云也是跑 2 千米。 小云跑步已经坚持了很长时间&#xff0c;从 1990 年 1 月 1 日周…...

【LeetCode】力扣刷题热题100道(31-35题)附源码 搜索二维矩阵 岛屿数量 腐烂的橙子 课程表 实现 Trie (前缀树)(C++)

一、搜索二维矩阵 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 可以使用 从右上角开始搜索 的方法来有效地找到目标值。 选择起始位置&#xff1a; 从矩…...

react使用react-redux状态管理

1、安装 npm install react-redux2、创建store.js import { createStore } from redux;// 定义初始状态 const initialState {counter: 888 };// 定义 reducer 函数&#xff0c;根据 action 类型更新状态 function reducer(state initialState, action) {switch (action.ty…...

04_角色创建窗口

将上文的登录窗口隐藏 创建空节点 作为创建角色窗口 命名为CreateWnd 创建输入的名字的输入框 再创建一个按钮用来随机角色名字 创建开始游戏按钮 End....

Dockerfile -> Docker image -> Docker container

1. Dockfile -> Docker image docker build -t shuai_image -f xxx/xxx/Dockerfile . (.不能少)出现&#xff1a; [] Building xxx(10/17) > [internal] load build definition from Dockerfile > > transferring dockerfile: … > > transferring context …...

LDN的蓝牙双模键盘帮助文档

文档索引 已支持的PCB列表(仅列出少部分)&#xff1a;键盘特性硬件软件键盘以及驱动蓝牙模式USB模式 驱动功能介绍主界面键盘列表页面键盘配置&#xff08;使用双模键盘的请务必细看本说明&#xff09;功能层配置(改键)触发层配置(改FN键等触发功能)功能选择&#xff08;重要&a…...

搭建一个基于Spring Boot的驾校管理系统

搭建一个基于Spring Boot的驾校管理系统可以涵盖多个功能模块&#xff0c;例如学员管理、教练管理、课程管理、考试管理、车辆管理等。以下是一个简化的步骤指南&#xff0c;帮助你快速搭建一个基础的系统。 1. 项目初始化 使用 Spring Initializr 生成一个Spring Boot项目&am…...

运动相机拍视频过程中摔了,导致录视频打不开怎么办

3-11 在使用运动相机拍摄激烈运动的时候&#xff0c;极大的震动会有一定概率使得保存在存储卡中的视频出现打不开的情况&#xff0c;原因是存储卡和相机在极端情况下&#xff0c;可能会出现接触不良的问题&#xff0c;如果遇到这种问题&#xff0c;就不得不进行视频修复了。 本…...

MongoDB vs Redis:相似与区别

前言 在当今的数据库领域&#xff0c;MongoDB 和 Redis 都是备受关注的非关系型数据库&#xff08;NoSQL&#xff09;&#xff0c;它们各自具有独特的优势和适用场景。本文将深入探讨 MongoDB 和 Redis 的特点&#xff0c;并详细对比它们之间的相似之处和区别&#xff0c;帮助…...

数字图像处理:实验二

任务一&#xff1a; 将不同像素&#xff08;32、64和256&#xff09;的原图像放大为像素大 小为1024*1024的图像&#xff08;图像自选&#xff09; 要求&#xff1a;1&#xff09;输出一幅图&#xff0c;该图包含六幅子图&#xff0c;第一排是原图&#xff0c;第 二排是对应放大…...

基于海思soc的智能产品开发(高、中、低soc、以及和fpga的搭配)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 市场上关于图像、音频的soc其实非常多&#xff0c;这里面有高、中、低档&#xff0c;开发方式也不相同。之所以会这样&#xff0c;有价格的因素&am…...

SSM旅游信息管理系统

&#x1f345;点赞收藏关注 → 添加文档最下方联系方式可咨询本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345; 项目视频 …...

FastADMIN实现网站启动时执行程序的方法

FastAdmin基于ThinkPHP框架&#xff1a;ThinkPHP框架中与 Application_Start 类似的功能可以在应用初始化钩子&#xff08;Hook&#xff09;中实现。在FastAdmin项目中&#xff0c;一般在应用的 common.php 文件中定义行为&#xff08;Behavior&#xff09;来实现类似功能。 定…...

【威联通】FTP服务提示:服务器回应不可路由的地址。被动模式失败。

FTP服务器提示&#xff1a;服务器回应不可路由的地址。被动模式失败。 问题原因网络结构安全管理配置服务器配置网关![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1500d9c0801247ec8c89db7a44907e4f.png) 问题 FTP服务器提示&#xff1a;服务器回应不可路由的地址…...

nginx常用配置 (含负载均衡、反向代理、限流、Gzip压缩、图片防盗链 等示例)

nginx的配置文件通常在 /etc/nginx/nginx.conf , /etc/nginx/conf.d/*.conf 中&#xff0c; 一般直接 改 conf.d目录下的 default.conf文件&#xff0c; 然后 先检测配置文件是否有错误 nginx -t 再重新加载配置文件 或 重启nginx&#xff0c;命令如下 nginx -s reload 或…...

21.1、网络设备安全概述

目录 网络设备安全概况——交换机、路由器安全威胁 网络设备安全概况——交换机、路由器安全威胁 第一个是MAC地址泛洪&#xff0c;MAC地址表记录着交换机拥有的MAC地址跟端口的对应关系 MAC地址表主要是三个字段&#xff0c;MAC地址对应的端口号&#xff0c;也就表示主机是连…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...