不知道为啥自己居然报了阿里的游戏运营专员,幸好小伙伴报了c/c++,我在一旁驻足观看,本来觉得自己很水,一看这些题觉得自己更tm水了!
尤其tm最后三个附加题,前两个读不懂,就做了最后一个。
如下,欢迎各位大大们给予批评,水平灰常有限,代码肯定有问题,不过自己没想到(确实没考虑重复数字的情况)……
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int a[]={5,8,10,4,3,1,2,6,9,7};//随意数组,原数组1,2,5,8,10,4,3,6,9,7
int flag=0,cnt=0;
vector<int> v1(a,a+10);
//while(cin>>a)
//v1.push_back (a);
vector<int> v2(v1);
sort(v2.begin(),v2.end());//将v2按升序排序
vector<int>::size_type size=v1.size();
for(vector<int>::size_type i=0;i!=size&&flag!=size;i++)
{
if(v1[i]==v2[flag])//flag是该输出的那个数的下标
{
vector<int> ::iterator ip=v1.begin()+i;
if((flag+1)!=size&&find(v1.begin(),ip,v2[flag+1])!=ip)//每次都检验该次的数字(v2[flag])之前是否有与其在v2(v2[flag+1])中相邻的下一个数
{
while((flag+1)!=size&&find(v1.begin(),ip,v2[flag+1])!=ip)
{
cnt++;//该数之前有多少比他大的
flag++;
}
while(cnt>=0)
{
cout<<v2[flag-cnt]<<" ";
cnt--;
}
flag++;
cnt=0;
cout<<endl;
}
else
{
cout<<v2[flag]<<endl;
flag++;
}
}
else
{
continue;
}
}
return 0;
}