c++:蓝桥杯中的基础算法1(枚举,双指针)

枚举

基础概念:

枚举(Enum)是一种用户定义的数据类型,用于定义一个有限集合的命名常量。在C++中,枚举类型可以通过关键字enum来定义。

下面是一个简单的枚举类型的定义示例:

#include <iostream>enum Color {RED,GREEN,BLUE
};int main() {Color c = RED;if(c == RED) {std::cout << "The color is red" << std::endl;} else if(c == GREEN) {std::cout << "The color is green" << std::endl;} else if(c == BLUE) {std::cout << "The color is blue" << std::endl;}return 0;
}

在上面的示例中,我们定义了一个枚举类型Color,其中包含了三个枚举常量RED、GREEN和BLUE。在main函数中,我们声明了一个Color类型的变量c,并将其赋值为RED。然后通过if语句来判断c的值,并输出相应的颜色信息。

枚举类型的常量默认从0开始递增,也可以手动指定初始值,例如:

enum Fruit {APPLE = 1,ORANGE,BANANA
};

在这个示例中,APPLE的值为1,ORANGE的值为2,BANANA的值为3。

枚举类型的常量可以直接通过枚举类型名访问,也可以通过枚举类型名加作用域解析运算符::来访问,例如:

Color c = Color::RED;

练习1:特别数的和

1.特别数的和 - 蓝桥云课 (lanqiao.cn)

解析: 

```cpp
#include <iostream>
using namespace std;// 定义一个函数f,用于判断一个整数是否包含数字0、1、2、9
int f(int x)
{while(x){int y=x%10; // 取出x的个位数if(y==0||y==1||y==2||y==9) // 判断个位数是否为0、1、2、9{return x; // 如果包含0、1、2、9,返回原整数x}x=x/10; // 去掉x的个位数,继续判断下一位}return 0; // 如果x不包含0、1、2、9,返回0
}int main()
{int n;cin>>n; // 输入一个整数nint num=0;for(int i=1;i<=n;i++){if(f(i)!=0) // 调用函数f判断i是否包含0、1、2、9{num+=i; // 如果包含,则将i加到num中}}cout<<num<<endl; // 输出结果numreturn 0;
}

练习2:反倍数

1.反倍数 - 蓝桥云课 (lanqiao.cn)

 


练习3:找到最多的数

1.找到最多的数 - 蓝桥云课 (lanqiao.cn)


双指针 

基础概念:

双指针算法是一种常用的解决问题的技巧,主要用于在数组或链表中寻找一些特定的结构。双指针算法通常有两种类型:快慢指针和左右指针。下面分别介绍这两种类型的双指针算法。

  1. 快慢指针: 快慢指针算法通常用于解决链表中的问题,例如判断链表是否有环、找到链表的中间节点等。

示例代码:

#include <iostream>
using namespace std;struct ListNode {int val;ListNode* next;ListNode(int x) : val(x), next(NULL) {}
};bool hasCycle(ListNode* head) {ListNode* slow = head;ListNode* fast = head;while (fast != NULL && fast->next != NULL) {slow = slow->next;fast = fast->next->next;if (slow == fast) {return true; // 链表中存在环}}return false; // 链表中不存在环
}int main() {// 创建一个有环的链表ListNode* head = new ListNode(3);head->next = new ListNode(2);head->next->next = new ListNode(0);head->next->next->next = new ListNode(-4);head->next->next->next->next = head->next; // 使链表形成环cout << hasCycle(head) << endl; // 输出1,表示链表中存在环return 0;
}

  1. 左右指针: 左右指针算法通常用于解决数组中的问题,例如在有序数组中寻找两个数使它们的和等于目标值等。

示例代码:

#include <iostream>
#include <vector>
using namespace std;vector<int> twoSum(vector<int>& numbers, int target) {int left = 0;int right = numbers.size() - 1;while (left < right) {int sum = numbers[left] + numbers[right];if (sum == target) {return {left + 1, right + 1}; // 返回找到的两个数的下标(从1开始)} else if (sum < target) {left++;} else {right--;}}return {}; // 没有找到符合条件的两个数
}int main() {vector<int> numbers = {2, 7, 11, 15};int target = 9;vector<int> result = twoSum(numbers, target);for (int num : result) {cout << num << " ";}return 0;
}

以上是双指针算法的两种常见类型及其示例代码。双指针算法通常能够在O(n)的时间复杂度内解决问题,是解决一些数组和链表相关问题的高效方法。

练习1:回文判定

1.回文判定 - 蓝桥云课 (lanqiao.cn)

 

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

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

相关文章

【面试题】谈谈MySQL的索引

索引是啥 可以把Mysql的索引看做是一本书的目录&#xff0c;当你需要快速查找某个章节在哪的时候&#xff0c;就可以利用目录&#xff0c;快速的得到某个章节的具体的页码。Mysql的索引就是为了提高查询的速度&#xff0c;但是降低了增删改的操作效率&#xff0c;也提高了空间…

医疗在线问诊小程序:开启数字化医疗新篇章

随着科技的飞速发展&#xff0c;医疗行业正逐步向数字化转型。其中&#xff0c;医疗在线问诊小程序作为一种新型的医疗健康服务模式&#xff0c;为人们提供了更为便捷、高效的医疗咨询服务。本文将探讨医疗在线问诊小程序的发展背景、优势及应用场景&#xff0c;以期为医疗行业…

【HarmonyOS应用开发】三方库(二十)

三方库的基本使用 一、如何获取三方库 目前提供了两种途径获取开源三方库&#xff1a; 通过访问Gitee网站开源社区获取 在Gitee中&#xff0c;搜索OpenHarmony-TPC仓库&#xff0c;在tpc_resource中对三方库进行了资源汇总&#xff0c;可以供开发者参考。 通过OpenHarmony三…

小程序--模板语法

一、插值{{}}语法 1、内容绑定 <view>{{iptValue}}</view> 2、属性绑定 <switch checked"{{true}}" /> Page({data: {iptValue: 123} }) 二、简易双向数据绑定 model:value&#xff1a;支持双向数据绑定 注&#xff1a;仅input和textarea支持&a…

【Algorithms 4】算法(第4版)学习笔记 09 - 3.2 二叉查找树

文章目录 前言参考目录学习笔记1&#xff1a;二叉树与二叉搜索树定义1.1&#xff1a;二叉树定义1.2&#xff1a;二叉搜索树定义1.3&#xff1a;Java定义1.4&#xff1a;BST基本实现1.5&#xff1a;BST demo 演示1.5.1&#xff1a;节点搜索成功命中演示1.5.2&#xff1a;节点搜索…

SpringBoot+WebSocket实现即时通讯(二)

前言 紧接着上文《SpringBootWebSocket实现即时通讯&#xff08;一&#xff09;》 本博客姊妹篇 SpringBootWebSocket实现即时通讯&#xff08;一&#xff09;SpringBootWebSocket实现即时通讯&#xff08;二&#xff09;SpringBootWebSocket实现即时通讯&#xff08;三&…

第3.1章:StarRocks数据导入——Insert into 同步模式

一、概述 在StarRocks中&#xff0c;insert的语法和mysql等数据库的语法类似&#xff0c;并且每次insert into操作都是一次完整的导入事务。 主要的 insertInto 命令包含以下两种&#xff1a; insert into tbl select ...insert into tbl (col1, col2, ...) values (1, 2, ...…

day02_java基础_变量_数据类型等

零、今日内容 1 HelloWorld程序 2 idea使用 3 变量 4 数据类型 5 String 一、复习 班规班纪。。。。。 安装jdk JDK 是开发工具 JRE 是运行代码 JDK包含JRE 配置环境变量 二、HelloWorld程序 前提&#xff1a;JDK已经安装配置完毕&#xff0c;有了这些环境就敲代码 代码…

Vue路由组件练习

Vue 路由组件练习 1. 演示效果 2. 代码分析 2.1. 安装 vue-router 命令&#xff1a;npm i vue-router 应用插件&#xff1a;Vue.use(VueRouter) 2.2. 创建路由文件 在 src 文件夹下&#xff0c;创建router文件夹&#xff0c;并在该文件夹创建index.js文件 2.3. 导入依赖…

普中51单片机学习(定时器和计数器)

定时器和计数器 51单片机有两组定时器/计数器&#xff0c;因为既可以定时&#xff0c;又可以计数&#xff0c;故称之为定时器/计数器。定时器/计数器和单片机的CPU是相互独立的。定时器/计数器工作的过程是自动完成的&#xff0c;不需要CPU的参与。51单片机中的定时器/计数器是…

<网络安全>《43 网络攻防专业课<第九课 - 跨站脚本攻击及防范>》

1 什么是XSS XSS(cross site script)或者说跨站脚本是一种Web应用程序的漏洞&#xff0c;恶意攻击者往Web页面里插入恶意Script代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其中Web里面的Script代码会被执行&#xff0c;从而达到恶意攻击用户的目的。 2 XSS脚本实例 …

城市智能交通指挥中心系统方案

二、方案设计 1.简介 公路治安卡口子系统实现对交通流信息的及时采集和各类嫌疑车辆的查控与处置&#xff0c;扼制并打击一些显见性违规违法行为。其主要功能包括&#xff1a;车辆图像记录、速度测定、车辆号牌识别、自动报警、数据检索、流量统计、图像存贮、数据传输和远程…

在前后端分离项目中如何设置统一返回格式

目录 一、步骤一 二、步骤二 在前后端分离的项目中&#xff0c;为了方便前后端交互&#xff0c;后端往往需要给前端返回固定的数据格式&#xff0c;但不同的实体类返回格式不同&#xff0c;所以在真实开发中&#xff0c;我们将所有API接口设置返回统一的格式。基本上包括的有…

【vue3】手动实现md在线编辑

1.背景 由于知识库的一些.md格式的文件的文件内容可能会有变动&#xff0c;如果频繁下载修改后&#xff0c;再进行上传&#xff0c;会让用户操作不方便&#xff0c;为此接入md在线编辑功能 2 md在线编辑具体实现 2.1 搭建项目 搭建项目下载和引入bytemd和fflate相关依赖&…

【深度优先搜索】【树】【状态压缩】2791. 树中可以形成回文的路径数

作者推荐 【深度优先搜索】【树】【有向图】【推荐】685. 冗余连接 II 本文涉及知识点 深度优先搜索 树 图论 状态压缩 LeetCode:2791. 树中可以形成回文的路径数 给你一棵 树&#xff08;即&#xff0c;一个连通、无向且无环的图&#xff09;&#xff0c;根 节点为 0 &am…

lv15 I2C背景知识(裸机I2C、linux对I2C支持、MPU6050)4

一、I2C总线背景知识 SOC芯片平台的外设分为&#xff1a; 一级外设&#xff1a;外设控制器集成在SOC芯片内部 二级外设&#xff1a;外设控制器由另一块芯片负责&#xff0c;通过一些通讯总线与SOC芯片相连 Inter-Integrated Circuit&#xff1a; 字面意思是用于“集成电路之…

css实现悬浮卡片

结果展示 html代码 <!doctype html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge,chrome1"> <meta name"viewport" content"…

Android Studio创建项目时gradle下载慢

先停止当前Sync&#xff0c;找到gradle-wrapper.properties文件&#xff0c;将distributionUrl修改为腾讯镜像源&#xff1a; distributionUrlhttps\://mirrors.cloud.tencent.com/gradle/gradle-6.5-bin.zip

Vue 使用 v-bind 动态绑定 CSS 样式

在 Vue3 中&#xff0c;可以通过 v-bind 动态绑定 CSS 样式。 语法格式&#xff1a; color: v-bind(数据); 基础使用&#xff1a; <template><h3 class"title">我是父组件</h3><button click"state !state">按钮</button&…

【Spring】IoC容器 控制反转 与 DI依赖注入 XML实现版本 第二期

文章目录 基于 XML 配置方式组件管理前置 准备项目一、 组件&#xff08;Bean&#xff09;信息声明配置&#xff08;IoC&#xff09;&#xff1a;1.1 基于无参构造1.2 基于静态 工厂方法实例化1.3 基于非静态 工厂方法实例化 二、 组件&#xff08;Bean&#xff09;依赖注入配置…