买第三便宜帽子

度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少?

输入描述:

首先输入一个正整数N(N <= 50),接下来输入N个数表示每顶帽子的价格(价格均是正整数,且小于等于1000

输出描述:

如果存在第三便宜的帽子,请输出这个价格是多少,否则输出-1

示例1

输入

10
10 10 10 10 20 20 30 30 40 40

输出

30

我的方案:

set方法:

#include<iostream>
#include<set>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
	cout << "请输入帽子总数";
	int count;
	cin >> count;
	cout << endl;
	cout << "请分别输入帽子价格:" << endl;
	set<int> s;
	while (count--)
	{
		int i;
		cin >> i;
		s.insert(i);
	}
	set<int>::iterator ite1 = s.begin();
	set<int>::iterator ite2 = s.end();
	for (; ite1 != ite2; ite1++)
	{
		cout << *ite1;
	}
	cout << endl;

	if (s.size() < 3)
		cout << "没有第三便宜帽子";
	else
	{
		set<int>::iterator ite3 = s.begin();
		ite3++;
		ite3++;
		cout << "第三便宜帽子价格为:" <<*ite3 << endl;
	}	
	return 0;
}

vector方法:

//输入描述:首先输入一个正整数N,N<=50,接下来输入N个数表示每顶帽子的价格
//输出描述:如果存在第三便宜的帽子,请输出这个价格是多少,否则输入-1

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int main20()
{
	cout << "请输入帽子总数";
	int count;
	cin >> count;
	cout << endl;
	cout << "请分别输入帽子价格:"<<endl;
	vector<int> v;
	int i=0;
	while (count--)
	{
		cin >> i;
		v.push_back(i);
	}
	cout <<"输入完毕" << endl;
	sort(v.begin(), v.end());
	v.erase(unique(v.begin(), v.end()), v.end());//删去一个元素边上与它相同的元素 
	cout << "dfdf" << endl;
	for (int i = 0; i < v.size(); i++)
	{
		cout << v[i] << " ";
	}
	if (v.size() < 3)
		cout << "没有第三便宜帽子";
	else
		cout << "第三便宜帽子价格为:" << v[2] << endl;
	system("pause");
	return 0;

}

网友们的方法:

//set方法
#include <iostream>
#include <set>

int main(void)
{
    int n;
    while(std::cin >> n)
    {
        std::set<int> iprice_N;
        for(int i=0; i<n; ++i)
        {
            int ivalue;
            std::cin >> ivalue;
            iprice_N.insert(ivalue);
        }
        if(iprice_N.size() < 3)
        {
            std::cout << -1 << std::endl;
            continue;
        }
        //set里面是元素是不允许重复的,并且自动从小到大排序好了
        std::set<int>::iterator it = iprice_N.begin();
        it++;
        it++;
        std::cout << *it << std::endl;
    }
    return 0;
}
//数组方法
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
	int n;
	int prize[50];
	cin >> n;
    if(n<3) {
        cout<<"-1";
        return 0;
    }
	for (int i = 0; i < n; i++) {
		cin >> prize[i];
	}
	sort(prize, prize + n);
	int cnt = 0;
	for (int i = 0; i < n; i++) {
		if (prize[i + 1] > prize[i]&&(i+1)<n) {
			cnt++;
			if (cnt == 2) {
				cout << prize[i + 1];
			}
		}
	}
    if(cnt<2) {
        cout<<"-1";
        return 0;
    }
    return 0;
}
//vector方法
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;  
int main(){   
    int n,tmp;    
    cin>>n;   
    vector<int> v;   
    while(n--){  
        cin>>tmp;        
        v.push_back(tmp);    
    }    
    sort(v.begin(),v.end());    
    v.erase(unique(v.begin(),v.end()),v.end());    
    cout<<(v.size()<3?-1:v[2]);    
    return 0;
}

参考自:http://s3.nowcoder.com/questionTerminal/f3aaf8fedcea43c6b12a11710068726b?toCommentId=527216

https://blog.csdn.net/qq_41937767/article/details/80510130

https://blog.csdn.net/u011361880/article/details/77480377?utm_source=blogxgwz9

猜你喜欢

转载自blog.csdn.net/weixin_38383877/article/details/83620356