当前位置: 首页 > 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;也就表示主机是连…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

前端高频面试题2:浏览器/计算机网络

本专栏相关链接 前端高频面试题1&#xff1a;HTML/CSS 前端高频面试题2&#xff1a;浏览器/计算机网络 前端高频面试题3&#xff1a;JavaScript 1.什么是强缓存、协商缓存&#xff1f; 强缓存&#xff1a; 当浏览器请求资源时&#xff0c;首先检查本地缓存是否命中。如果命…...

深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学

一、光敏传感技术的物理本质与系统级实现挑战 光敏电阻作为经典的光电传感器件&#xff0c;其工作原理根植于半导体材料的光电导效应。当入射光子能量超过材料带隙宽度时&#xff0c;价带电子受激发跃迁至导带&#xff0c;形成电子-空穴对&#xff0c;导致材料电导率显著提升。…...

Java设计模式:责任链模式

一、什么是责任链模式&#xff1f; 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09; 是一种 行为型设计模式&#xff0c;它通过将请求沿着一条处理链传递&#xff0c;直到某个对象处理它为止。这种模式的核心思想是 解耦请求的发送者和接收者&#xff0c;…...

初探用uniapp写微信小程序遇到的问题及解决(vue3+ts)

零、关于开发思路 (一)拿到工作任务,先理清楚需求 1.逻辑部分 不放过原型里说的每一句话,有疑惑的部分该问产品/测试/之前的开发就问 2.页面部分(含国际化) 整体看过需要开发页面的原型后,分类一下哪些组件/样式可以复用,直接提取出来使用 (时间充分的前提下,不…...