试题编号: | 201609-1 |
试题名称: | 最大波动 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: |
问题描述
小明正在利用股票的波动程度来研究股票。小明拿到了一只股票每天收盘时的价格,他想知道,这只股票连续几天的最大波动值是多少,即在这几天中某天收盘价格与前一天收盘价格之差的绝对值最大是多少。
输入格式
输入的第一行包含了一个整数n,表示小明拿到的收盘价格的连续天数。
第二行包含n个正整数,依次表示每天的收盘价格。
输出格式
输出一个整数,表示这只股票这n天中的最大波动值。
样例输入
6
2 5 5 7 3 5
样例输出
4
样例说明
第四天和第五天之间的波动最大,波动值为|3-7|=4。
评测用例规模与约定
对于所有评测用例,2 ≤ n ≤ 1000。股票每一天的价格为1到10000之间的整数。
|
问题链接:CCF201609试题。
问题描述:
先输入一个十进制整数n,再输入n个正整数,求它们相邻数之差(绝对值)的最大值。
问题分析:
这是一个求最大值的问题,把n个数过一遍即可。
程序说明:
这里写了C语言和C++语言两个版本的程序。
取绝对值可以用库函数实现,也可以用自己的代码简单实现。
提交后得100分的C语言程序如下:
/* CCF201609-1 最大波动 */
#include <stdio.h>
#define MAX(x, y) ((x > y) ? (x) : (y))
int main(void)
{
int n, first, second, delta, maxval=0;
// 输入n,输第1个数(从逻辑上来说应该写两句,为了简洁只需要写一句)
scanf("%d%d", &n, &first);
while(--n) {
// 输入第2至第n个数
scanf("%d", &second);
// 求差值(波动值),取绝对值,求最大值
delta = second - first;
if(delta<0)
delta = -delta;
maxval = MAX(maxval, delta);
first = second;
}
// 输出结果
printf("%d\n", maxval);
return 0;
}
提交后得100分的C++语言程序如下:
/* CCF201609-1 最大波动 */
#include <iostream>
using namespace std;
int main()
{
int n, first, second, delta, maxval=0;
// 输入n,输第1个数
cin >> n;
cin >> first;
for(int i=1; i<n; i++) {
// 输入第2至第n个数
cin >> second;
// 求差值(波动值),取绝对值,求最大值
delta = second - first;
if(delta<0)
delta = -delta;
maxval = max(maxval, delta);
first = second;
}
// 输出结果
cout << maxval << endl;
return 0;
}