学习C 从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。
附上汇总贴:
【题目描述】
小蓝是机甲战队的队长,他手下共有$$n$$名队员,每名队员都有一个战斗力值$$w_i$$。现在他需要将这$$n$$名队友分成两组$$a$$和$$b$$,分组必须满足以下条件:
战斗力差距的计算公式为$$|max(a)-min(b)|$$ , 其其中$$max(a)$$表示$$a$$组中战斗力最大的, $$min(b)$$表示$$b$$组中战斗力最小的。
请你计算出可以得到的最小战斗力差距。
【输入】
第一行一个整数$$n$$,表示队员个数。
第二行$$n$$个整数$$w_1,w_2,w_3\dots w_n$$,分别表示每名队友的战斗力值。
数据范围保证:$$2\le n\le 10^5,1\le w_i\le 10^9$$。
【输出】
输出一个整数,表示可以得到的最小战斗力差距。
【输入样例】
3
1 2 3
【输出样例】
1
【代码详解】
#include <bits/stdc .h>
using namespace std;
int n, minn=1e9;
int a[100005];
int main()
{
cin >> n; // 输入n
for (int i=1; i<=n; i ) { // 输入所有战斗力值
cin >> a[i];
}
sort(a 1, a n 1); // 按照从小到大排序
for (int i=2; i<n; i ) { // 遍历a数组
minn = min(minn, abs(a[i]-a[i-1])); // 比较a[i]与a[i-1]、a[i 1]的差值的绝对值的最小值
minn = min(minn, abs(a[i]-a[i 1]));
}
cout << minn << endl; // 输出最小战斗力差距
return 0;
}
【运行结果】
3
1 2 3
1
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved