题目来源:蓝桥杯2019初赛 C++ A组C题
题目描述
由于沙之国长年干旱,法师小明准备施展自己的一个神秘法术来求雨。
这个法术需要用到他手中的49 张法术符,上面分别写着1 至49 这49 个数字。
法术一共持续7 周,每天小明都要使用一张法术符,法术符不能重复使用。
每周,小明施展法术产生的能量为这周7 张法术符上数字的中位数。
法术施展完7 周后,求雨将获得成功,降雨量为7 周能量的中位数。
由于干旱太久,小明希望这次求雨的降雨量尽可能大,请大最大值是多少?
问题分析
中位数问题。
奇数个有序的数,其中位数为中间那个数。7*7的矩阵,想让其横和竖的中位数最大,即中间那个数尽可能大,那就让比它大的数放在右下角,如下图所示:
1 | 2 | 3 | 4 | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|
1 | |||||||
2 | |||||||
3 | |||||||
4 | x | y | y | y | |||
5 | y | y | y | y | |||
6 | y | y | y | y | |||
7 | y | y | y | y |
上表中,确保x
AC的C语言程序如下:
/* LQ0134 最大降雨量 */
#include
#define N 7
int main()
{
printf("%d\n", N * N - ((N + 1) / 2) * ((N + 1) / 2) + 1);
return 0;
}