AT_joi2020_yo1b_a 实验(Exam ) 题解
题目大意
给定
做法
排个序是最简单的。
这里科普一下 C++11 的新特性—— lambda 表达式。本质上就是一个类。
相当于一个功能闭包,也可以说是匿名函数,可以在一些操作较简单单独封装成一个函数比较麻烦的时候使用。
语法格式:
[cap](par)opt->type{body}
cap 是捕获列表(一定要有),par 是参数列表(没有可以省略),opt 是函数选项( mutable 或者 const ,默认 const ),type 是返回值类型(可以让编译器自行判断),body 是函数体。
[ ] 不捕获任何变量。
[&] 捕获外部作用域中所有变量,并作为引用在函数体中使用(按引用捕获)。
[=] 捕获外部作用域中所有变量,并作为副本在函数体中使用(按值捕获)。
[=,&foo] 按值捕获外部作用域中所有变量,并按引用捕获 foo 变量。[bar] 按值捕获 bar 变量,同时不捕获其他变量。
[this] 捕获当前类中的 this 指针,让 lambda 表达式拥有和当前类成员函数同样的访问权限。如果已经使用了 & 或者 =,就默认添加此选项。捕获 this 的目的是可以在 lamda 中使用当前类的成员函数和成员变量。——摘自这篇文章
可了解的还是很多的,可以少一些码量、让代码更好看 / 直观。其他的可以自行百度。这里我们只要实现 cmp 函数即可。
代码(C++11 及以上):
#include<bits/stdc++.h>
using namespace std;
int a[5];
int main(){
scanf("%d%d%d",&a[0],&a[1],&a[2]);
sort(a,a+3,[](int a,int b){return a>b;});//lambda 函数体记得打分号。
printf("%d",a[0]+a[1]);
return 0;
}