n
个数字,输出能使 (|X1 − A| + |X2 − A| + . . . + |Xn − A|)
得到最小值的 A
、最小值数量与最小值有几种n
个数字 (0 < n ≤ 1000000)n
行为式子中的 x所以一样教给专业来解释
绝对值和最小值发生在X为中位数
代表说输出需要的A
即为中位数
while
重复读入代表有多少数字的 n
,再用 for
存 n
个数字到阵列里,因为泡沫排序效率太低 (n
有可能很大),就用内建的 qsort
来优化
int x[1000000];
int compare(const void *a, const void *b){
return(*(int*)a - *(int*)b);
}
int main(){
int n;
int i, j;
while(scanf("%d", &n) != EOF){
for(i = 0; i < n; i++){
scanf("%d", &x[i]);
}
qsort(x, n, sizeof(int), compare);
...
}
return 0;
}
n
的奇偶问题,用两个变数 A1
、A2
来分别赋值,至於为什麽这样写也留给大家代数字思考看看罗;找好中位数就开始用 for
回圈计算最小值数量,并用 A2 - A1 + 1
求得有几种最小值
A1 = x[(n - 1) / 2];
A2 = x[n / 2];
count = 0;
for(i = 0; i < n; i++){
if(x[i] == A1 || x[i] == A2){
count++;
}
}
printf("%d %d %d\n", A1, count, A2 - A1 + 1);
#include<stdio.h>
#include<stdlib.h>
int x[1000000];
int compare(const void *a, const void *b){
return(*(int*)a - *(int*)b);
}
int main(){
int n;
int A1, A2;
int count;
int i, j;
while(scanf("%d", &n) != EOF){
for(i = 0; i < n; i++){
scanf("%d", &x[i]);
}
qsort(x, n, sizeof(int), compare);
A1 = x[(n - 1) / 2];
A2 = x[n / 2];
count = 0;
for(i = 0; i < n; i++){
if(x[i] == A1 || x[i] == A2){
count++;
}
}
printf("%d %d %d\n", A1, count, A2 - A1 + 1);
}
return 0;
}
>>: 17.移转 Aras PLM大小事-用Excel复制料号去查询
Abstract 大家每天都是新的开始,都有24H小时给你规划,系统跟人类一样都是有自己的周期性计画...
上一篇提到了TiDB的特色之一,便是实践了HTAP。那HTAP又是什麽东西? HTAP全名Hybri...
今天要利用之前学到的东西写一个猜数字游戏,此猜数字游戏要符合以下条件: 1 猜数字范围介於0-99间...
今天是30天程序语言研究的第二十七天,由於最近写unix语言的东西用到很多,所以做了很多笔记,就想说...
Scale() - 缩放 相对於目前的画布大小进行缩放,如 scale(0.5)。 -> 变成...