Sicily 1037
来源:互联网 发布:手机怎么看淘宝直播 编辑:程序博客网 时间:2024/05/18 01:56
数据最多30000,暴力解法~一个一个枚举就好了
题目如下:
Description
地理学家们经常要对一段河流进行测量分析。他们从上游开始向下游方向等距离地选择了n(≤30000)个点测量水位深度。得到一组数据d1,d2,……,dn,回到实验室后数据分析员根据需要对数据进行分析,发掘隐藏在数据背后的规律。最近,乌龙博士发现某种水文现象与河床地势有关,于是他指示他手下的分析员要找出一段河流中最大高低起伏差不超过k(≤100)的最长一段。这看似一个复杂的问题,由于任务紧急,分析员来求助于你,并告诉你博士的所有数据都精确到个位。
Input
输入文件有两行:
第一行是整数n和k,分别表示测量点的个数和博士要求的最大水深差(也就是河床地势差)。第二行有n个整数,表示从上游开始依次得到的水位深度di(1≤i≤n, 0≤di≤32767)。
Output
输出文件只有一行,是整数m,表示最长一段起伏不超过k的河流长度,用测量点个数表示。
Sample Input
6 2
5 3 2 2 4 5
Sample Output
4
提示,就是从第二个测量点到第五个测量点之间的那段:5 3 2 2 4 5。他们起伏最大是4-2=2。
我的解法:
// Copyright <lijiancheng> [2014]// Sicily 1137#include <iostream>#include <stdio.h>using namespace std;int main() { int n,k; int dis[30000]; cin >> n >> k; for (int i = 0; i < n; i++) { cin >> dis[i]; } int count, max_count = 1, max_dis, min_dis; for (int i = 0; i < n-1; i++) { count = 1; max_dis = dis[i]; min_dis = dis[i]; for (int j = i+1; j < n; j++) { if (dis[j] > max_dis) max_dis = dis[j]; if (dis[j] < min_dis) min_dis = dis[j]; if ((max_dis - min_dis) > k) { break; } else { count++; if (count > max_count) { max_count = count; } } } } cout << max_count << endl; return 0;}
0 0
- Sicily 1037
- Sicily 1027
- sicily 1007
- sicily 1795
- sicily 1036
- sicily 1419
- sicily 1889
- sicily 1684
- sicily 1686
- sicily 1004
- sicily 1135
- sicily 1152
- sicily 1151
- sicily 1002
- sicily 1156
- sicily 1424
- sicily 分类
- sicily 1090
- C程序设计语言(第二版)习题:第二章
- Plan : 破晓
- 8个乘客随意登上6节车厢
- SZU:B47 Big Integer II
- 操作系统 : 第一周作业
- Sicily 1037
- 百度笔试
- KMP算法详解-- 转自Matrix67
- 雨夜静思(一)
- 笔试总结篇(一) : 广州X公司笔试
- KMP 代码 暂存
- 编程珠玑 第一章 大数据排序
- 操作系统课程:调度算法
- PLAN :昔日未来