当前位置: 代码迷 >> 综合 >> 【ACM之旅】数列特征2
  详细解决方案

【ACM之旅】数列特征2

热度:28   发布时间:2024-01-20 22:10:33.0

一、[题目] 数列特征2

时间限制:1.0s   内存限制:512.0MB

问题描述

给出n个数,找出这n个数的第二大值,第二小值,平方和。

输入格式

第一行为整数n,表示数的个数。(2<=n<=100)
第二行有n个数,为给定的n个数,每个数的绝对值都小于1000。

输出格式

输出三行,每行一个整数。第一行表示这些数中的第二大值,第二行表示这些数中的第二小值,第三行表示这些数的平方和。

样例输入

5
100 100 -30 30 1

样例输出

100
1
21801


二、[代码]:

PS. 数列特征2 是上一道题 数列特征1 的变形,题目由原来的求最值变化成了求第二最值,这样一来擂台法明显不管用了,这里我们就需要利用到排序算法来对数据进行先行排序,排序后的数列我们不难得出第二最值,以下列出我的解法。

算法一: 排序最值法(利用C快速排序库函数qsort())

#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b)
{  return *(int*)a-*(int*)b;  
}  int main()
{  int h=0,t,n,m,a[100];  scanf("%d",&n); m=n;  while(n--){  scanf("%d",&t);  h+=t*t;  a[n]=t;}  qsort(a,m,4,cmp);  printf("%d\n%d\n%d\n",a[m-2],a[1],h);return 0;
}


欢迎评论和转载,转载请注明文章出处,我对此表示最真诚的敬意!

  相关解决方案