[编程题] 买帽子
时间限制:1秒
空间限制:32768K
度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少?
输入描述:
首先输入一个正整数N(N <= 50),接下来输入N个数表示每顶帽子的价格(价格均是正整数,且小于等于1000)
输出描述:
如果存在第三便宜的帽子,请输出这个价格是多少,否则输出-1
输入例子:
10 10 10 10 10 20 20 30 30 40 40
输出例子:
30
解题思路:本题采用排序处理
1) 将输入的数据进行按照从小到大的顺序排序
2) 分别比较排好序的数据的前后两位 如果大于count++,相等不进行处理;直到count == 2退出循环,或者全部遍历完退出循环
3) 如果count==2 则证明找到价格第三小的帽子,即为hat[i]否则输出-1
1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 5 int main() 6 { 7 int n; 8 while(cin>>n) 9 { 10 int count = 0; 11 int hat[n]; 12 13 for(int i=0;i<n;i++) 14 { 15 cin>>hat[i]; 16 } 17 sort(hat,hat+n); 18 int i=1; 19 for(;i<n;i++) 20 { 21 if(hat[i]>hat[i-1]) 22 { 23 count++; 24 } 25 if(count == 2) 26 { 27 break; 28 } 29 } 30 if(count == 2) 31 cout<<hat[i]<<endl; 32 else 33 cout<<-1<<endl; 34 } 35 return 0; 36 }