15蓝桥杯模拟 2-第三小 编程题

100 阅读1分钟

image.png

思想

维护三个最小变量 a1 a2`` a3

把每个输入进来的值与这三个变量进行对比。类似滚动数组。

有这样一个图:

image.png

ifx<=a1小时,那么x就会成为新的a1(即成为新的最小值

但是要从后面开始挪,a2a3位置上成为新a3``,a1a2位置上成新a2

再把xa1位置上成为新a1.

挪完之后如图(a-1):

image.png

else if x<=a2小比a1大的时候,那么就把x放到a2的位置作为第二小

else if x<=a3小 比a1,a2大的时候,就把x放到a3的位置上作为第三小。

因为题目要求第三小,所以最后返回a3即可。

code

image.png

#include <iostream>
using namespace std;
int main()
{
  int n=0;
  int a1=1000000000,a2=1000000000,1000000000;
  int x=0;
  cin>>n;

  for(int i=0;i<n;i++)
  {
    cin>>x;

     if(x<=a1)
     {
       a3=a2;
       a2=a1;
       a1=x;
     }

     else if(x<=a2)
     {
         a3=a2;
         a2=x;
     }

     else if(x<=a3)
     {
       a3=x;
     }

     if(i>=2)
     {
       cout<<a3<<" ";
     }
  }
  return 0;
}