题目描述 第一行输入一个数n,1 <= n <= 1000,下面输入n行数据,每一行有两个数,分别是x y。输出一组x y,该组数据是所有数据中x最小,且在x相等的情况下y最小的。
输入描述: 1 2 输入有多组数据。 每组输入n,然后输入n个整数对。
输出描述:
示例1
输入 复制
输出 复制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <bits/stdc++.h> using namespace std ;int main () { int num; int m, n, x, y; while (scanf ("%d" ,&num)!=EOF){ cin >>m>>n; for (int i = 1 ; i < num; i++){ cin >>x>>y; if (x<m||x==m&&y<n){ m = x; n = y; } } cout <<m<<" " <<n<<endl ; } return 0 ; }
整体思路:只保留最小的一组数据
#include 几乎包含了所有C++ 的头文件
C++常规解法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include <bits/stdc++.h> using namespace std ;struct Pair { int x; int y; }; bool cmp (Pair a,Pair b) { if (a.x>b.x) return 0 ; else if (a.x==b.x){ if (a.y<b.y) return 1 ; else return 0 ; } else return 1 ; } int main () { int n; while (cin >>n){ Pair *p=new Pair[n]; for (int i=0 ;i<n;i++) cin >>p[i].x>>p[i].y; sort(p,p+n,cmp); cout <<p[0 ].x<<" " <<p[0 ].y<<endl ; } }
关于C++ 的sort函数的使用
参数:
1 2 3 4 5 6 7 #include <algorithm> template < class RandomIt >void sort ( RandomIt first , RandomIt last );template < class RandomIt , class Compare >void sort ( RandomIt first , RandomIt last , Compare comp );
形式:sort(first_pointer,first_pointer+n,cmp)
其中cmp可以省略,如果省略则默认按照升序排序
且 cmp 函数可以重载
cmp基本用法
1 2 3 4 5 bool cmp (int a, int b) { return a > b; }
cmp结构体排序
1 2 3 4 5 Student stu[100 ]; bool cmp (Student a, Student b) { return a.x > b.x; }