总结4..

news2025/1/22 4:13:30

 #include <stdio.h>

// 定义全局变量n,用于表示二维数组的大小

// 定义二维数组b,用于标记找到单词的位置,初始化为0

int n, b[200][200] = {0};

// 定义二维数组d,存储8个方向的偏移量,用于在二维数组中搜索单词

// 分别表示右、右下、下、右、左、左上、左下、右上8个方向

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

// 定义二维字符数组a,用于存储输入的字符矩阵

char a[200][200];

// 定义字符数组c,存储要查找的单词"yizhong"

char c[10] = "yizhong";

 

// 定义函数p,用于在以(x, y)为起点的8个方向上搜索单词"yizhong"

// x, y 表示搜索的起始位置的坐标

void p(int x, int y) {

    // 遍历8个方向

    for (int k = 0; k < 8; k++) {

        // 初始化标志变量z为1,表示当前方向可能找到单词

        // 初始化临时变量x1和y1,初始值为起始坐标x和y

        int z = 1, x1 = x, y1 = y;

        // 从单词的第2个字符开始匹配,因为第1个字符已经在调用p函数时匹配过

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

            // 根据当前方向的偏移量更新坐标

            x1 += d[k][0];

            y1 += d[k][1];

            // 判断新坐标是否越界,或者对应位置的字符与单词中相应位置的字符不匹配

            if (x1 < 0 || x1 >= n || y1 < 0 || y1 >= n || (x1 >= 0 && x1 < n && y1 >= 0 && y1 < n && a[x1][y1]!= c[i])) {

                // 如果不满足条件,将标志变量z设为0,表示当前方向找不到单词

                z = 0;

                // 跳出内层循环

                break;

            }

        }

        // 如果在当前方向找到了完整的单词

        if (z) {

            // 标记起始位置

            b[x][y] = 1;

            // 重置临时坐标为起始坐标

            x1 = x;

            y1 = y;

            // 标记单词经过的所有位置

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

                x1 += d[k][0];

                y1 += d[k][1];

                b[x1][y1] = 1;

            }

        }

    }

}

 

int main() {

    // 输入二维数组的大小n

    scanf("%d", &n);

    // 输入二维字符数组a的内容

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

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

    }

    // 遍历二维字符数组a的每个元素

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

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

            // 如果当前元素为'y',调用p函数进行单词搜索

            if (a[i][j] == 'y') p(i, j);

        }

    }

    // 输出标记后的结果,找到单词的位置输出原字符,否则输出'*'

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

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

            if (b[i][j]) printf("%c", a[i][j]);

            else printf("*");

        }

        printf("\n");

    }

    return 0;

}

 #include <stdio.h>

// 全局变量声明

// n 表示数组 a 的元素个数

// l 和 r 分别表示区间的左边界和右边界

// a 数组用于存储输入的整数序列

// b 数组用于辅助(这里未完全体现其作用,代码中未对其进行有效使用),初始化为 0

// cnt 用于统计满足条件的组合数量,初始化为 0

int n, l, r, a[103], b[103] = {0}, cnt = 0;

 

// 深度优先搜索函数

// x 表示当前处理到数组 a 的第 x 个元素

// s 表示当前已选择元素的和

void dfs(int x, int s) {

    // 如果已经处理完数组 a 的所有元素

    if (x == n + 1) {

        // 如果当前已选择元素的和 s 在区间 [l, r] 内

        if (s >= l && s <= r) {

            // 满足条件的组合数量加 1

            cnt++;

        }

        // 结束当前递归分支

        return;

    }

    // 如果选择当前元素 x 后,和 s 加上 a[x] 仍不超过右边界 r

    if (s + a[x] <= r) {

        // 递归处理下一个元素,并且加上当前元素 a[x] 的值

        dfs(x + 1, s + a[x]);

    }

    // 递归处理下一个元素,不选择当前元素 a[x]

    dfs(x + 1, s);

}

 

int main() {

    // 输入数组元素个数 n,区间左边界 l,区间右边界 r

    scanf("%d %d %d", &n, &l, &r);

    // 输入数组 a 的各个元素

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

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

    }

    // 从数组的第一个元素开始进行深度优先搜索,初始和为 0

    dfs(1, 0);

    // 输出满足条件的组合数量

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

    return 0;

}

学了一点树相关的基础知识,刷了几道洛谷上的题,对于字符串加搜索的这种类型的题目,熟练度不够

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从零开始:Spring Boot核心概念与架构解析

引言 在当今的Java开发领域&#xff0c;Spring Boot已经成为构建企业级应用的首选框架之一。它以其简洁、高效、易于上手的特点&#xff0c;极大地简化了Spring应用的开发过程。本文将从Spring Boot的核心概念入手&#xff0c;深入解析其架构设计和运行原理&#xff0c;帮助读…

深入 Flutter 和 Compose 的 PlatformView 实现对比,它们是如何接入平台控件

在上一篇《深入 Flutter 和 Compose 在 UI 渲染刷新时 Diff 实现对比》发布之后&#xff0c;收到了大佬的“催稿”&#xff0c;想了解下 Flutter 和 Compose 在 PlatformView 实现上的对比&#xff0c;恰好过去写过不少 Flutter 上对于 PlatformView 的实现&#xff0c;这次恰好…

无人机飞手考证难度增加,实操、地面站教学技术详解

随着无人机技术的快速发展和广泛应用&#xff0c;无人机飞手考证的难度确实在不断增加。这主要体现在对飞手的实操技能和地面站操作技术的要求上。以下是对无人机飞手考证中实操和地面站教学技术的详细解析&#xff1a; 一、实操教学技术详解 1. 无人机基础知识学习&#xff1…

linux下springboot项目nohup日志或tomcat日志切割处理方案

目录 1. 配置流程 2. 配置说明 其他配置选项&#xff1a; 3. 测试执行 4. 手动执行 https://juejin.cn/post/7081890486453010469 通常情况下&#xff0c;我们的springboot项目部署到linux服务器中&#xff0c;通过nohup java -jar xxx.jar &指令来进行后台运行我们…

知识图谱可视化:揭示隐藏的模式与关系

目录 前言1. 什么是知识图谱可视化1.1 知识图谱概述1.2 知识图谱可视化的定义 2. 知识图谱可视化的意义2.1 降低理解门槛2.2 帮助发现模式与洞察2.3 提升交互性与用户体验 3. 知识图谱可视化的技术实现3.1 数据处理与准备3.2 可视化技术3.3 用户交互设计 4. 知识图谱可视化的应…

深度学习基础--LSTM学习笔记(李沐《动手学习深度学习》)

前言 LSTM是RNN模型的升级版&#xff0c;神经网络模型较为复杂&#xff0c;这里是学习笔记的记录&#xff1b;LSTM比较复杂&#xff0c;可以先看&#xff1a; 深度学习基础–一文搞懂RNN 深度学习基础–GRU学习笔记(李沐《动手学习深度学习》) RNN&#xff1a;RNN讲解参考&am…

电气防火保护器为高校学生宿舍提供安全保障

摘 要&#xff1a;3月2日&#xff0c;清华大学紫荆学生公寓发生火情&#xff0c;无人员伤亡。推断起火原因系中厅内通电电器发生故障引燃周边可燃物所致。2月27日&#xff0c;贵州某高校女生宿舍发生火灾&#xff0c;现场明火得到有效控制&#xff0c;无人员受伤。2月19日&…

每打开一个chrome页面都会【自动打开F12开发者模式】,原因是 使用HBuilderX会影响谷歌浏览器的浏览模式

打开 HBuilderX&#xff0c;点击 运行 -> 运行到浏览器 -> 设置web服务器 -> 添加chrome浏览器安装路径 chrome谷歌浏览器插件 B站视频下载助手插件&#xff1a; 参考地址&#xff1a;Chrome插件 - B站下载助手&#xff08;轻松下载bilibili哔哩哔哩视频&#xff09…

C#使用WMI获取控制面板中安装的所有程序列表

C#使用WMI获取控制面板中安装的所有程序列表 WMI 全称Windows Management Instrumentation,Windows Management Instrumentation是Windows中用于提供共同的界面和对象模式以便访问有关操作系统、设备、应用程序和服务的管理信息。如果此服务被终止&#xff0c;多数基于 Windo…

企业级流程架构设计思路-基于价值链的流程架构

获取更多企业流程资料 纸上得来终觉浅&#xff0c;绝知此事要躬行 一.企业流程分级规则定义 1.流程分类分级的总体原则 2.完整的流程体系需要体现出流程的分类分级 03.通用的流程分级方法 04.流程分级的标准 二.企业流程架构设计原则 1.流程架构设计原则 流程框架是流程体…

PyTorch使用教程(8)-一文了解torchvision

一、什么是torchvision torchvision提供了丰富的功能&#xff0c;主要包括数据集、模型、转换工具和实用方法四大模块。数据集模块内置了多种广泛使用的图像和视频数据集&#xff0c;如ImageNet、CIFAR-10、MNIST等&#xff0c;方便开发者进行训练和评估。模型模块封装了大量经…

如何将自己本地项目开源到github上?

环境&#xff1a; LLMB项目 问题描述&#xff1a; 如何将自己本地项目开源到github上&#xff1f; 解决方案&#xff1a; 步骤 1: 准备本地项目 确保项目整洁 确认所有的文件都在合适的位置&#xff0c;并且项目的 README.md 文件已经完善。检查是否有敏感信息&#xff0…

ConvBERT:通过基于跨度的动态卷积改进BERT

摘要 像BERT及其变体这样的预训练语言模型最近在各种自然语言理解任务中取得了令人印象深刻的性能。然而&#xff0c;BERT严重依赖于全局自注意力机制&#xff0c;因此存在较大的内存占用和计算成本。尽管所有的注意力头都从全局角度查询整个输入序列以生成注意力图&#xff0…

2025web建议

随便收集的信息 新手入门路线推荐 第一步&#xff1a;Web安全相关概念 建议学习时间&#xff1a;2周 学习内容如下&#xff1a; 1、熟悉基本概念(SQL注入、上传、XSS、CSRF、一句话木马等)。 2、通过关键字(SQL注入、上传、XSS、CSRF、一句话木马等)进行Google。 3、阅读《Web…

用JAVA实现人工智能:采用框架Spring AI Java

Spring AI 集成人工智能&#xff0c;为Java项目添加AI功能指南 本文主旨是用实际的可操作的代码&#xff0c;介绍Java怎么通过spring ai 接入大模型。 例子使用spring ai alibaba QWen千问api完成&#xff0c;你可以跑通以后换自己的实现。QWen目前有100万免费Token额度&…

【JDBC】数据库连接的艺术:深入解析数据库连接池、Apache-DBUtils与BasicDAO

文章目录 前言&#x1f30d; 一.连接池❄️1. 传统获取Conntion问题分析❄️2. 数据库连接池❄️3.连接池之C3P0技术&#x1f341;3.1关键特性&#x1f341;3.2配置选项&#x1f341;3.3使用示例 ❄️4. 连接池之Druid技术&#x1f341; 4.1主要特性&#x1f341; 4.2 配置选项…

canvas 图片组合并进行下载

运行图片&#xff1a; 思路&#xff1a;先画一个背景图片&#xff0c;再画一个二维码定位到你想要的位置&#xff0c;最后直接下载即可&#xff0c;可以扩散一下思维&#xff0c;画简单的海报的时候&#xff0c;也可以的 源代码 <!DOCTYPE html> <html lang"en&q…

记一次升级请求创建报错问题的调查过程(Windchill)

问题现象描述&#xff1a; ​ 新建申请请求单&#xff0c;在选择某些物料时会报此错误&#xff0c;选另外的物料时又可以正常创建&#xff0c;不报此错误。 问题原因分析&#xff1a; ​ 1.分析后台日志 —没有任何进展&#xff0c;此报错应该是前端的报错 ​ 2.从前端下手…

自旋锁与CAS

上文我们认识了许许多多的锁&#xff0c;此篇我们的CAS就是从上文的锁策略开展的新概念&#xff0c;我们来一探究竟吧 1. 什么是CAS&#xff1f; CAS: 全称Compare and swap&#xff0c;字⾯意思:“比较并交换”&#xff0c;⼀个CAS涉及到以下操作&#xff1a; 我们假设内存中…

线程池遇到未处理的异常会崩溃吗?

线程池中的 execute 和 submit 方法详解 目录 引言execute 方法 使用示例代码 submit 方法 2.1 提交 Callable 任务2.2 提交 Runnable 任务 遇到未处理异常 3.1 execute 方法遇到未处理异常3.2 submit 方法遇到未处理异常 小结 引言 在多线程编程中&#xff0c;线程池是提高性…