算法训练2.2:栈和排序

简介: 分析:这道题简单,用到栈,原理就是栈顶元素与后面的元素进行比较,如果比后面的数都大,则弹出这个元素,否则进栈下一个元素,没了,就这么简单

6210569c5cb0b1f389fc08562cdf642.png


源码:

include <bits/stdc++.h>

using namespace std;

int b=0;

int main(void)

{

stack<int>stk;
int n;
cin>>n;
int arr[n];
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
stk.push(arr[0]); 
for(int i=0;i<n-1;i++)
{
int a=0;
for(int j=i+1;j<n;j++)
    {
if(stk.top()>arr[j])
        {
            a++;
        }
    }
if(a==(n-1-i))
    {
int c=stk.top();
        stk.pop();
        b++;
cout<< c <<" ";
        stk.push(arr[i+1]);
    }else
    {
        stk.push(arr[i+1]);
    }
}
b=stk.size();  //注意这个,我第一次没设置的时候,一直输出不对,发现,stk.size()会变化,是一个变化的值,所以下面的循环只能用当前的长度值;
for(int i=0;i<b;i++)
{
int c=stk.top();
    stk.pop();
cout<<c<<" ";
}
return 0;

}

最后,很简单这道题!

目录
相关文章
|
29天前
|
存储 算法
【C算法】编程初学者入门训练140道(1~20)
【C算法】编程初学者入门训练140道(1~20)
|
28天前
|
算法
【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
|
29天前
|
搜索推荐 算法 Java
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
该博客文章通过UML类图和Java源码示例,展示了如何使用适配器模式将QuickSort类和BinarySearch类的排序和查找功能适配到DataOperation接口中,实现算法的解耦和复用。
16 1
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
|
22天前
|
算法 搜索推荐 Java
算法实战:手写归并排序,让复杂排序变简单!
归并排序是一种基于“分治法”的经典算法,通过递归分割和合并数组,实现O(n log n)的高效排序。本文将通过Java手写代码,详细讲解归并排序的原理及实现,帮助你快速掌握这一实用算法。
34 0
|
1月前
|
算法 关系型数据库 MySQL
揭秘MySQL中的版本号排序:这个超级算法将颠覆你的排序世界!
【8月更文挑战第8天】在软件开发与数据管理中,正确排序版本号对软件更新及数据分析至关重要。因MySQL默认按字符串排序版本号,可能出现&#39;1.20.0&#39;在&#39;1.10.0&#39;之前的不合理情况。解决办法是将版本号各部分转换为整数后排序。例如,使用`SUBSTRING_INDEX`和`CAST`函数从`software`表的`version`字段提取并转换版本号,再按这些整数排序。这种方法可确保版本号按逻辑正确排序,适用于&#39;major.minor.patch&#39;格式的版本号。对于更复杂格式,需调整处理逻辑。掌握此技巧可有效应对版本号排序需求。
69 3
|
2月前
knn增强数据训练
【7月更文挑战第27天】
26 10
|
2月前
knn增强数据训练
【7月更文挑战第28天】
19 2
|
24天前
|
算法 搜索推荐
支付宝商业化广告算法问题之基于pretrain—>finetune范式的知识迁移中,finetune阶段全参数训练与部分参数训练的效果如何比较
支付宝商业化广告算法问题之基于pretrain—>finetune范式的知识迁移中,finetune阶段全参数训练与部分参数训练的效果如何比较
|
27天前
|
算法 搜索推荐
算法设计 (分治法应用实验报告)基于分治法的合并排序、快速排序、最近对问题
这篇文章是关于分治法应用的实验报告,详细介绍了如何利用分治法实现合并排序和快速排序算法,并探讨了使用分治法解决二维平面上的最近对问题的方法,包括伪代码、源代码实现及时间效率分析,并附有运行结果和小结。
|
28天前
|
算法
【算法】栈算法——逆波兰表达式求值
【算法】栈算法——逆波兰表达式求值