sdut-3332 数据结构实验之栈与队列五:下一较大值(一)
来源:互联网 发布:java resultset 行数 编辑:程序博客网 时间:2024/05/17 16:53
数据结构实验之栈与队列五:下一较大值(一)
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic Discuss
Problem Description
对于包含n(1<=n<=1000)个整数的序列,对于序列中的每一元素,在序列中查找其位置之后第一个大于它的值,如果找到,输出所找到的值,否则,输出-1。
Input
输入有多组,第一行输入t(1<=t<=10),表示输入的组数;
以后是 t 组输入:每组先输入n,表示本组序列的元素个数,之后依次输入本组的n个元素。
Output
输出有多组,每组之间输出一个空行(最后一组之后没有);
每组输出按照本序列元素的顺序,依次逐行输出当前元素及其查找结果,两者之间以-->间隔。
Example Input
24 12 20 15 185 20 15 25 30 6
Example Output
12-->2020-->-115-->1818-->-120-->2515-->2525-->3030-->-16-->-1
Hint
本题的数据量小、限时要求低,可以不用栈来完成。
这道题在开始输入的时候就进行对数据进行处理,当输入每一组数据时,当栈为空时直接把该数据进栈,输入数据时不为空,则进行和栈中的数据进行比较....代码中有详解
#include <bits/stdc++.h>using namespace std;//用来声明s栈 struct sqstack{ int num;//用于记录输入的每一组数据的大小,从而好与后面数据进行比较大小 int id,next;//id是为了记录输入的这个数据是这组数据的第几个,从而便于对a数组中的next的值进行赋值时找到是数组中在那个位置上(id位置) //next是用来存储比num数值大的那一个数};int compear(){ sqstack a[1000],p,t;//a数组到最后是用来进行输出的对象 stack<struct sqstack>s;//s栈 int n; scanf("%d",&n); for(int i=0;i<n;++i) { cin>>a[i].num; a[i].id=i; a[i].next=-1;//后面会对其进行更改值,代表比他大的第一个值,如果没有改变说明这组数据中没有比他大的 p=a[i]; if(s.empty())//遇到空时直接对其进行进栈 s.push(p); else { while(!s.empty())//不为空时,同时如果栈中有多个数据时会进行循环,直到为空或者找不到比这个数值大的 { t=s.top();//栈顶元素 if(p.num>t.num) { a[t.id].next=p.num;//t.id代表栈顶元素在这组数据的位置,同时也代表在a数组中代表的位置,在此把比他大的值存入到next中, s.pop();//已经为a[i-1]找到了第一个比他大的值,所以出栈就行啦, } else break;//如果找不到比t.num大的值得话,最终就会循环 } s.push(p);//a[i]不比a[i-1]大的话就结束,再把a[i]进栈 } } for(int i=0;i<n;++i) printf("%d-->%d\n",a[i].num,a[i].next); return 0;}int main(){ int t; scanf("%d",&t); while(t--) { compear(); if(t) printf("\n"); }}
阅读全文
0 0
- sdut-3332 数据结构实验之栈与队列五:下一较大值(一)
- SDUT 3332数据结构实验之栈与队列五:下一较大值(一)
- 3332 数据结构实验之栈与队列五:下一较大值(一)
- sdut 3333 数据结构实验之栈与队列六:下一较大值(二)
- SDUT 3333 数据结构实验之栈与队列六:下一较大值(二)
- 3332-数据结构实验之栈与队列五:下一较大值(二)
- 数据结构实验之栈与队列五:下一较大值(一)
- 数据结构实验之栈与队列五:下一较大值(一)
- 3333-数据结构实验之栈与队列五:下一较大值(一)
- 数据结构实验之栈与队列五:下一较大值(一)
- 【单调栈】SDUT 3333 数据结构实验之栈与队列六:下一较大值(二)
- 3332 数据结构实验之栈五:下一较大值(一)
- 【单调栈】数据结构实验之栈与队列六:下一较大值(二)
- 数据结构实验之栈与队列六:下一较大值(二)
- 数据结构实验之栈与队列六:下一较大值(二)
- 数据结构实验之栈与队列六:下一较大值(二)
- 数据结构实验之栈与队列六:下一较大值(二)
- 数据结构实验之栈与队列六:下一较大值(二)
- 商旅网站用户画像的解决方案
- 菱形继承和虚函数
- 新瓶装旧酒:全程无命令 GitHub Pages 创建您的博客站点
- opencv和opencv-contrib android版编译
- [NLP论文阅读] Learning Paraphrastic Sentence Embeddings from Back-Translated Bitext
- sdut-3332 数据结构实验之栈与队列五:下一较大值(一)
- spring上传文件报错Expected MultipartHttpServletRequest: is a MultipartResolver configured?
- 数人云PaaS Innovation 2017,重新定义PaaS进化
- Java的split详解
- 由 System.arraycopy 引发的巩固:对象引用 与 对象 的区别
- RBAC基于角色的访问控制 thinkphp
- 第五周项目1——建立顺序栈算法库
- java类和对象的联系,区别
- andengine战争迷雾(地图探索)探究