codingame (一)--Temperatures(base)

The Goal:

In this exercise, you have to analyze records of temperature to find the closest to zero.

codingame (一)--Temperatures(base)_第1张图片

Sample temperatures Here, -1 is the closest to 0.

Rules:

Write a program that prints the temperature closest to 0 among input data. If two numbers are equally close to zero, positive integer has to be considered closest to zero (for instance, if the temperatures are -5 and 5, then display 5).

我的代码:

#include
#include
#include
#include

using namespace std;

/**
 * Auto-generated code below aims at helping you parse
 * the standard input according to the problem statement.
 **/
vector element;

int search(vector &sch){
   int num = 0;   //放置最接近于0的元素
   int flag = 0;    //元素位置标志
   int schnum = sch.size();    //vector对象的元素个数
   if(sch[0]>=0){    //首先判断第一个元素是否大于等于0,是则返回该元素
        num = sch[0];   
   }else if(sch[schnum-1]<=0){    //判断最后元素是否小于等于0,是则直接返回该元素
        num = sch[schnum-1];    
   }else {                                     //找到第一个大于0的元素,判断上一个元素与该元素哪个更接近于0
        for(int i =0;i             if(sch[i]>=0){
                flag = i;
                break;    
            }
        }
        if(sch[flag]+sch[flag-1]>0){
            num = sch[flag-1];    
        }else{
            num = sch[flag];    
        }
   }
   return num;
}
 
int main()
{
    
    int n; // the number of temperatures to analyse
    int result;
    cin >> n; cin.ignore();
    for (int i = 0; i < n; i++) {
        int t; // a temperature expressed as an integer ranging from -273 to 5526
        cin >> t; cin.ignore();
        element.push_back(t);   //将输入的元素保存到vector对象中
    }
    if(element.size()==0){      //首先看element中是否为空,如果是直接输出0
        cout << 0 << endl;
    } else{
        sort(element.begin(),element.end());      //将element中的元素升序排列
        result = search(element);             //寻找接近0的元素
        cout << result << endl;
    }
    // Write an action using cout. DON'T FORGET THE "<< endl"
    // To debug: cerr << "Debug messages..." << endl;

}

总结:

总体思路:先对输入的元素排序,排完序开始寻找哪个元素最接近于0.先判断首元素是否为非负数,是则说明此元素最接近于0。否则再判断尾元素是否为非正数,是则说明此元素最接近0.否则再寻找集合内第一个是正数的元素,则该元素的上一个元素肯定为非正数,在这两者之间找到最接近0的元素。

收获:通过本次练习,主要学习vector的一些操作以及sort函数,vector作为参数传递,注意传参时使用引用才能更改其内部的值。

你可能感兴趣的:(C++)