找最小数 (vector的练习)

题目描述:

第一行输入一个数n,1 <= n <= 1000,下面输入n行数据,每一行有两个数,分别是x y。输出一组x y,该组数据是所有数据中x最小,且在x相等的情况下y最小的。 

输入描述:

输入有多组数据。
每组输入n,然后输入n个整数对。

输出描述:

输出最小的整数对。

输入样例:

5  
3 3  
2 2  
5 5  
2 1  
3 6

输出样例:

2 1

解题思路: 

先把所有的x,y都推入vector中,然后按照x升序,x相等时y升序的方法排序,输出第一对x,y即可。

AC代码: 

#include <bits/stdc++.h>
using namespace std;

struct node
{
    int x,y;
};

bool Cmp(node a,node b)
{
    //按照x升序排列,若x相等,则按照y升序排列
    return a.x!=b.x ? a.x<b.x : a.y<b.y;
}

int main()
{
    int n;
    cin >> n;
    vector<node> v;
    for(int i = 0; i < n; i++)
    {
        int x, y;
        cin >> x >> y;
        v.push_back({x,y});
    }
    sort(v.begin(),v.end(),Cmp);
    cout << v[0].x << " " << v[0].y << endl;
}

猜你喜欢

转载自blog.csdn.net/weixin_42449444/article/details/85332079
今日推荐