比较简单的题,用STL库可以大幅度降低代码复杂度:将int型的数字压入到vector中,调用sort实现从小到大排序,再采用reverse将其翻转为从大到小。将第一个元素(最大值)首先输出,再遍历后面第一个与最大值不同的元素,其即为题干要求的次大值。
sort和reverse均在头文件“#include <algorithm>”中。
代码如下:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv)
{
int n=0;
cin>>n;
vector<int> V;
for(int i=1;i<=n;i++)
{
int temp=0;
cin>>temp;
V.push_back(temp);
}
sort(V.begin(),V.end());
reverse(V.begin(),V.end());
//从大到小排序
// for(vector<int>::iterator it=V.begin();it!=V.end();it++)
// cout<<(*it)<<" ";
// cout<<endl;
int max=V[0];
cout<<max<<endl;
for(int i=1;i<=n-1;i++)
{
if(V[i]!=max)
{
cout<<V[i]<<endl;
break;
}
}
return 0;
}