洛谷C++简单题小练习day22—小鱼记忆小程序!一题五解,高效学习

day22--小鱼记忆--2.26

习题概述

题目描述

小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字 ai​(长度不一定,以 0 结束),记住了然后反着念出来(表示结束的数字 0 就不要念出来了)。这对小鱼的那点记忆力来说实在是太难了,你也不想想小鱼的整个脑袋才多大,其中一部分还是好吃的肉!所以请你帮小鱼编程解决这个问题。

输入格式

一行内输入一串整数,以 0 结束,以空格间隔。

输出格式

一行内倒着输出这一串整数,以空格间隔。

代码展示 

法一:常规做法,利用for循环来改变条件使得其逆序输出

#include<bits/stdc++.h>
using namespace std;

int x[100],c=0;
int main()
{
    for(int i=0;i>=0;i++){
        cin>>x[i];
        if(x[i]==0) break; 
        c=i;
    }
    for(int j=c;j>=0;j--)
    cout<<x[j]<<" ";
    return 0;
}

法二: STL栈

1. STL中最基本的一种数据结构就是vector

#include<bits/stdc++.h>
using namespace std;

vector<int> a;
int c;//STL可以完全不用担心数组大小的问题,这个和string类似 
int main(){
	while(1){//有时候也可以巧用死循环 
		cin>>c;
		if(c==0) break;//终止条件 
		a.push_back(c);//将括号里的元素压入vector尾部 
	}
	while(!a.empty()){
		cout<<a.back()<<" ";//.back()是一个返回vector尾部元素的函数 
		a.pop_back();//删除vector尾部的元素
	}
    /*
    这一部分输出程序也可以写成:
    for(int i=a.size()-1;i>=0;i--){//a.size()返回a中元素的个数
        cout<<a[i]<<" ";
    }
    要注意vector是从a[0]开始存储a.size()个元素,要当心越界访问
    */
	return 0;
} 

2. STL中还有一个专门为栈设计的数据结构—stack(后进先出)

#include<bits/stdc++.h>
using namespace std;

stack<int> a;//定义一个int型的stack 
int c;
int main(){
	while(1){
		cin>>c;
		if(c==0) break;
		a.push(c);//将括号里的元素压入stack顶部 
	}
	while(!a.empty()){
		cout<<a.top()<<" ";//.top()是一个返回stack顶部元素的函数 
		a.pop();//删除stack顶部的元素 
	}
	return 0;
} 

法三:指针法

1. 数组指针

#include<bits/stdc++.h>
using namespace std;

int a[101],c;
int *p=a;//定义一个int类型的指针,指向数组不用取地址符 
int main(){
	while(1){
		cin>>c;
		if(c==0) break;
		p++;//指针指向当前所指元素在数组中的下一个元素 
		*p=c;//星号表示这个指针现在不是代表地址而是代表该地址的元素 
	}
	while(p!=a){//当指针不是指向数组的第一个元素地址 
		cout<<*p<<" ";
		p--;
	}
	return 0;
} 

 2. STL指针—迭代器

#include<bits/stdc++.h>
using namespace std;

vector<int> a;
int c;
int main(){
	while(1){
		cin>>c;
		if(c==0) break;
		a.push_back(c);
	}
	for(vector<int>::iterator it=a.end()-1;it>=a.begin();it--)
	{
		/*a.end()返回的是a中最后一个元素后面的地址,因此一定要记得-1
		a.begin()返回a的第一个元素的地址 
		*/ 
		cout<<*it<<" "; //*it表示it所指的元素 
	}
	return 0;
}

法四:sort函数排序法

#include<bits/stdc++.h>
using namespace std;

struct node
{
	int time;//存储该数据被输入的时间先后
	int value;//存储该数据的赋值 
}a[101];
int c,n;
int cmp(node x,node y){//自定义比较函数 
	return x.time>y.time;
}
int main(){
	while(1){
		cin>>c;
		if(c==0) break;
		a[n].value=c;
		a[n].time=n;
		n++;
	}
	sort(a,a+n,cmp);//前两个变量分别表示开始排序的元素的地址和结束排序的元素的地址 
	for(int i=0;i<n;i++){
		cout<<a[i].value<<" ";
	}
	return 0;
} 

法五:优先队列法

#include<bits/stdc++.h>
using namespace std;

struct node{
	int time;
	int value; 
}t;
priority_queue<node> a;
bool operator<(const node &x,const node &y){//这里比较函数的名字不能改,两个const和两个&也不能去掉
	return x.time<y.time;
}//定义优先队列的比较函数,这个和sort相反,是使得排序后前后代入可以return false,具体细节请自行了解吧
int c,n;
int main(){
	while(1){
		cin>>c;
		if(c==0) break;
		n++;
		t.value=c;
		t.time=n;
		a.push(t);//将元素输入优先队列 
	}
	while(!a.empty()){
		cout<<a.top().value<<" ";//.top()返回优先队列的第一个元素
		a.pop();//删除优先队列的第一个元素 
	}
	return 0;
} 

未完待续...等我复习完数据结构一轮之后再来 深度优先搜索(DFS),广度优先搜索(BFS),二叉树后序(中序)遍历,dijkstra算法

心得体会

1.  栈(Stack)是一种常见的数据结构,它遵循后进先出的原则。栈通常用于存储和管理数据,在栈中,最后插入的元素会被最先删除。

栈有两种基本操作:

1.压栈(Push):向栈顶添加一个元素。

2.出栈(Pop):从栈顶移除一个元素。

除了上述基本操作外,栈还可以支持以下操作:

·栈顶(Top):获取栈顶元素但不删除。

·判空(Empty):判断栈是否为空。

·大小(Size):获取栈中元素的数量。

2. sort函数介绍

vector<int> vec = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};

sort(vec.begin(), vec.end()); // 对向量进行排序默认升序

sort(vec.begin(), vec.end(), greater<int>()); //使用自定义排序规则进行降序排序

3. 优先队列法

优先队列(Priority Queue)是一种特殊的队列,它的元素按照一定的顺序进行排列;

支持自定义比较函数,以便于适应不同的排序需求。例如,如果我们想要按照降序排列,可以这样创建优先队列:

priority_queue<int, vector<int>, less<int>> pq;

常见应用场景: 优先队列常用于实现一些贪心算法、最短路径算法(如 Dijkstra 算法)、最小生成树算法(如 Prim 和 Kruskal 算法)等需要根据优先级进行处理的算法中

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iOS App 上架指南及关键

引言 上架App Store是将iOS应用提交申请并上线的过程&#xff0c;旨在让应用在App Store上展示&#xff0c;吸引用户并获取流量。本文将介绍iOS上架的整体流程&#xff0c;并提供一些建议和注意事项。 一、iOS上架的整体流程 1. 申请开发者账号 首先&#xff0c;需要申请苹…

08_css

文章目录 CSS概念在HTML中引入CSS的三种方式CSS的选择器标签选择器类选择器id选择器后代选择器子类选择器并集选择器伪类选择器伪元素选择器属性选择器选择器的优先顺序 盒子模型边框的写法内外边距的写法外边距合并 标签的分类块级元素行级元素行内块 浮动 CSS 概念 css是层…

共同学习|Spring Cloud Alibaba一一服务网关Gateway

目录 服务网关-Gateway 环境搭建 负载均衡 Gateway Predicates Path After Before Cookie Header Weight GatewayFilter Factories StripPrefix AddResponseHeader 自定义全局Filter 网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连&…

北斗卫星赋能,宠物定位新篇章—追踪宠物,不再是难题

北斗卫星赋能&#xff0c;宠物定位新篇章—追踪宠物&#xff0c;不再是难题 随着社会的快速发展与科技的不断进步&#xff0c;人们的生活方式也在不断改变。宠物已经成为越来越多家庭的重要成员&#xff0c;在这个宠爱宠物的时代&#xff0c;如何确保宠物的安全&#xff0c;特…

js之继承

js之继承 1、原型 prototype 和 __proto__2、原型链3、继承4、hasOwnProperty 1、原型 prototype 和 proto 每个对象都有一个__proto__属性&#xff0c;并且指向它的prototype原型对象每个构造函数都有一个prototype原型对象prototype原型对象里的constructor指向构造函数本身…

淘金优化算法GRO求解不闭合SD-MTSP,可以修改旅行商个数及起点(提供MATLAB代码)

一、淘金优化算法GRO 淘金优化算法&#xff08;Gold rush optimizer&#xff0c;GRO&#xff09;由Kamran Zolf于2023年提出&#xff0c;其灵感来自淘金热&#xff0c;模拟淘金者进行黄金勘探行为。淘金优化算法&#xff08;Gold rush optimizer&#xff0c;GRO&#xff09;提…

vscode与vue/react环境配置

一、下载并安装VScode 安装VScode 官网下载 二、配置node.js环境 安装node.js 官网下载 会自动配置环境变量和安装npm包(npm的作用就是对Node.js依赖的包进行管理)&#xff0c;此时可以执行 node -v 和 npm -v 分别查看node和npm的版本号&#xff1a; 配置系统变量 因为在执…

Cloudera虚拟机配置(虚拟机环境自带Hadoop、Impala等大数据处理应用)

上学期的大数据处理课程&#xff0c;笔者被分配到Impala的汇报主题。然而汇报内容如果单纯只介绍Impala的理论知识&#xff0c;实在是有些太过肤浅&#xff0c;最起码得有一些实际操作来展示一下Impala的功能。但是Impala的配置实在是有些困难与繁琐&#xff0c;于是笔者通过各…

VSCode设置成中文语言环境

1&#xff0c;打开VSCode软件&#xff0c;按快捷键【CtrlShiftP】 2&#xff0c;在弹出的搜索框中输入configure language&#xff0c;然后选择Configure Display Language 3&#xff0c;在选择框中选择zh-cn 4&#xff0c;确认重启VSCode就可以了

【基础知识】MPP架构和hadoop架构比对

架构比对 简单一句描述。 mpp架构&#xff0c;就是找一群和自己能力差不多的任一起做事&#xff0c;每个人做的事情是一致的。 hadoop架构&#xff0c;就是找一群能力差一些的人&#xff0c;但只需要他们每个人只做一部分工作。 举例说明 一个特色小饭店如何成为连锁餐饮巨…

基于JAVA springboot+mybatis智慧生活分享平台设计和实现

基于JAVA springbootmybatis智慧生活分享平台设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 可定制系统 欢迎点赞 收藏 …

代码随想录算法训练营第二十二天| 235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

文章目录 1.二叉搜索树的最近公共祖先2.二叉搜索树中的插入操作3.删除二叉搜索树中的节点 1.二叉搜索树的最近公共祖先 因为是有序树&#xff0c;所以中间节点如果是p、q的公共祖先&#xff0c;那么一定存在p<公共祖先<q 或 q<公共祖先<p 代码如下&#xff1a; /**…

树的基本概念和结构

目录 树的概念和结构 树的相关概念 树的特点 树的表示 树的基本应用 树的概念和结构 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合 &#x1f4cc; 把它叫做树是因为它看起来像一棵倒挂的树&#x…

springboot集成docker快速入门demo

一、docker介绍 Docker是一个开源的应用容器引擎&#xff0c;它允许开发者将应用及其依赖打包到一个可移植的容器中。这个容器可以在任何流行的 Linux或 Windows操作系统上运行&#xff0c;并且支持虚拟化。容器是完全基于沙箱机制的&#xff0c;这意味着它们之间不会有任何接口…

一般情况下,硬件中使用Repeating Sequence出现波形很奇怪就是数据的周期频率和mcu运行的频率不一致导致的

一般情况下&#xff0c;出现波形很奇怪就是数据的周期频率和mcu运行的频率不一致导致的 把timer values 修改为0 1就好了&#xff0c;如果是0&#xff0c;0.1就不行&#xff0c;不会有下面的波形

计算机组成原理 — 存储器(2)

高速缓冲存储器 大家好呀&#xff01;我是小笙&#xff0c;由于存储器这部分章节内容较多&#xff0c;我分成二部分进行总结&#xff0c;以下是第二部分&#xff0c;希望内容对你有所帮助&#xff01; 概述 目的&#xff1a;避免CPU空等现象 原理&#xff1a;程序访问的局部…

【王道数据结构】【chapter6图】【P258t7】

试编写 利用DFS实现有向无环图的拓扑排序的算法 #include <iostream> #define maxsize 10 typedef struct node{int data;struct node *next; }node ,*pnode;pnode buynode(int x) {pnode tmp(pnode) malloc(sizeof (node));tmp->datax;tmp->next nullptr;return t…

【K8s】初识PV和PVC

​ 目录 收起 O、致谢 一、前言 二、Volume 2.1 什么是Volume 2.2 为什么要引入Volume 2.3 Volume类型有哪些 2.4 Volume如何使用 2.4.1 通过emptyDir共享数据 2.4.2 使用HostPath挂载宿主机文件 2.4.3 挂载NFS至容器 三、PV和PVC 3.1 什么是PV和PVC 3.2 为什么要引入PV和PVC 3…

Remainder Problem(根号分治)

Educational Codeforces Round 71 (Rated for Div. 2) F. Remainder Problem 题目链接 F. Remainder Problem 题意&#xff1a; 给你一个由 500000 500000 500000 个整数&#xff08;编号从 1 1 1 到 500000 500000 500000 &#xff09;组成的数组 a a a 。最初 a a a…

【JavaEE】网络原理: HTTPS协议相关内容

目录 HTTPS 是什么 HTTPS 的工作过程 对称加密 非对称加密 引入证书 理解数据签名 通过证书解决黑客攻击 HTTPS 是什么 HTTPS也是一个应用层协议, 是在HTTP协议的基础上引入了一个加密层. HTTP协议内容都是按照文本的方式明文传输的, 这就导致在传输过程中出现一些被篡…