【题目链接】

ybt 1116:最长平台
OpenJudge NOI 1.9 12:最长平台
洛谷 B2097 最长平台

【题目考点】

1. 数组中做统计

2. 求最大值

【解题思路】

解法1:遍历并计数

  • 设临时统计长度len(初值为0),最大长度maxLen(初值0),上一个数字lastNum(初值设为与要输入的数字都不同的数字,如-1)
  • 将数据输入整型数组a
  • 遍历数组a
    • 如果当前查看的元素a[i]与上一个数字lastNum相同,那么len增加1
    • 如果当前查看的元素a[i]与上一个数字lastNum不同,那么完成对一个“平台”的长度统计,看这个平台的长度是不是比当前已知的最大长度maxLen更大,如果是,那么将maxLen设为该长度。而后要看的是一个新的数字a[i]的平台,将lastNum设为a[i],已经统计了1个数字a[i],将len设为1。
  • 遍历结束后,还要尝试更新一次maxLen,因为最后统计的平台长度还没与maxLen比较。
  • 输出maxLen

解法2:双指针(尺取法)

设左指针l,右指针r,指向平台的两端。左右指针之间的元素(包括两端)都是相同的。

  • 如果a[l]等于a[r],那么右指针向后移。
  • 如果a[l]不等于a[r],那么这个平台的长度(相同元素的个数)为r-l,更新平台的最大值。然后让l = r,l从当前r位置开始,再取下一个平台

解法3:动态规划

  • 状态定义:dp[i]为以下标i为结尾的平台长度
  • 初始状态:dp[1] = 1
  • 状态转移方程:
    如果a[i-1]与a[i]不同,那么以下标i为结尾的平台长度为1
    如果a[i-1]与a[i]相同,那么以下标i为结尾的平台长度为dp[i-1]+1
    即:dp[i] = a[i-1] == a[i] ? d[i-1]+1 : 1
    求dp数组的最大值,即为最长平台

【题解代码】

解法1:遍历并计数

#include <bits/stdc++.h>
using namespace std;
int main()
{int n, len = 0, maxLen = 0, lastNum = -1, num;//len:平台长度 maxLen:最大平台长度 lastNum:上一个数。 cin >> n; for(int i = 0; i < n; ++i){cin >> num;if(num == lastNum)//如果这个数和上一个数相同 len++;else//如果这个数和上一个数不同 {if(len > maxLen)//求平台最大值maxLen = len;lastNum = num;len = 1;}}if(len > maxLen)maxLen = len;cout << maxLen;return 0;
}

解法2:双指针

#include <bits/stdc++.h>
using namespace std;
int main()
{int n, a[105], mx = 0;//mx:最大长度cin >> n;for(int i = 1; i <= n; ++i)cin >> a[i];for(int l = 1, r = 1; r <= n; r++)//l:左指针 r:右指针 {if(a[r] != a[l]){mx = max(mx, r - l);l = r;}}cout << mx;return 0;
}

解法3:动态规划

#include <bits/stdc++.h>
using namespace std;
int main()
{int n, a[105], dp[105], mx = 0;cin >> n;for(int i = 1; i <= n; ++i)cin >> a[i];dp[1] = 1;for(int i = 2; i <= n; ++i) {dp[i] = a[i] == a[i-1] ? dp[i-1]+1 : 1;mx = max(mx, dp[i]);}cout << mx;return 0;
}

信息学奥赛一本通 1116:最长平台 | OpenJudge NOI 1.9 12:最长平台 | 洛谷 B2097 最长平台相关推荐

  1. 信息学奥赛一本通 1209:分数求和 | OpenJudge NOI 1.13 12:分数求和

    [题目链接] ybt 1209:分数求和 OpenJudge NOI 1.13 12:分数求和 [题目考点] 1. 求最大公约数 2. 求最小公倍数 [解题思路] 求最大公约数,可以用辗转相除法.具体 ...

  2. 信息学奥赛一本通 1076:正常血压 | OpenJudge NOI 1.5 24:正常血压

    [题目链接] ybt 1076:正常血压 OpenJudge NOI 1.5 24:正常血压 [题目考点] 1. 循环统计连续处于某种状态的次数 例: 输入一个由英文数字组成的字符串,求其中最多连续出 ...

  3. 信息学奥赛一本通 1294:Charm Bracelet | OpenJudge NOI 2.6 7113:Charm Bracelet | 洛谷 P2871

    [题目链接] ybt 1294:Charm Bracelet OpenJudge NOI 2.6 7113:Charm Bracelet 洛谷 P2871 [USACO07DEC]Charm Brac ...

  4. 信息学奥赛一本通 1232:Crossing River | OpenJudge NOI 4.6 702:Crossing River

    [题目链接] ybt 1232:Crossing River OpenJudge NOI 4.6 702:Crossing River 一本通里的翻译不够完整,OpenJudge中的英文原题中有对数据 ...

  5. 信息学奥赛一本通 1242:网线主管 | OpenJudge NOI 1.11 04:网线主管

    [题目链接] ybt 1242:网线主管 OpenJudge NOI 1.11 04:网线主管 [题目考点] 1. 二分答案 [解题思路] 看题目中的数据都带小数点,似乎这是实数域上的问题.但仔细分析 ...

  6. 信息学奥赛一本通 1173:阶乘和 | OpenJudge NOI 1.6 15 | 洛谷 P1009 [NOIP1998 普及组] 阶乘之和

    [题目链接] ybt 1173:阶乘和 注:一本通上这题,应该把n≤50n\le50n≤50当做n≤100n\le100n≤100来看 OpenJudge NOI 1.6 15:阶乘和 洛谷 P100 ...

  7. 信息学奥赛一本通 1140:验证子串 | OpenJudge NOI 1.7 18

    [题目链接] ybt 1140:验证子串 OpenJudge NOI 1.7 18:验证子串 [题目考点] 1. 字符串处理 2. 判断子串(字符串模式匹配) 本文只给出的都是枚举求子串的算法.假设要 ...

  8. 信息学奥赛一本通 1036:A×B问题 | OpenJudge NOI 1.3 19

    [题目链接] ybt 1036:A×B问题 OpenJudge NOI 1.3 19:A*B问题 [题目考点] 1. 不同整型数据的范围 类型 占用字节数 可表示数字范围 char 1 -127~12 ...

  9. 信息学奥赛一本通 1406:单词替换 | OpenJudge NOI 1.7 21:单词替换

    [题目链接] ybt 1406:单词替换 OpenJudge NOI 1.7 21:单词替换 [题目考点] 1. 多字符串处理 读入字符串时可以选择方法 先读入整个字符串,而后遍历字符串,遇到空格时取 ...

  10. 信息学奥赛一本通 1194:移动路线 | OpenJudge NOI 2.6 2718:移动路线

    [题目链接] ybt 1194:移动路线 OpenJudge NOI 2.6 2718:移动路线 [题目考点] 1. 坐标型动态规划 [解题思路] 解法1:递推 设状态数组dp,dp[i][j]表示从 ...

最新文章

  1. 我真不想学 happens - before 了!
  2. 医疗影像专用计算机,FCI医疗专用接口满足数码影像需求 -医疗电子-与非网
  3. 模拟问路场景理解递归
  4. 探讨磷酸铁锂电池在UPS的应用
  5. 深入浅出:5G和HTTP
  6. 软件测试中python实用技巧,精选22个Python实用技巧,秀技能必备这份技术列表!...
  7. 用心整理,尽量最全,一套目标检测、卷积神经网络和OpenCV学习资料(教程/PPT/代码)...
  8. java 线程间的通讯(升级版)
  9. webpack文件系统缓存
  10. oracle的磁盘测试工具orion
  11. 近年来,学习图像去雾不得不看的论文和源代码
  12. matlab 结构体遍历,matlab 遍历结构体struc的成员
  13. 活动预约报名小程序已优化点与待优化点
  14. php打开文件fopen函数
  15. sql 分组排序语句顺序
  16. android 更新相册,Android 图片存入系统相册更新显示实例详解
  17. 工程项目成本费用明细表_工程施工合同成本费用明细表有哪些
  18. SuperMap iObjects .NET开发ASP .NET网站入门
  19. 通过取消反向DNS加速ssh登录速度
  20. 全球首款机场专用自动驾驶纯电动大巴在东京实地测试

热门文章

  1. Codeforces Round #205 (Div. 2) : D
  2. JavaScript实现继承机制(3)——通过原型链(prototype chaining)方式
  3. MySQL视图的应用
  4. 一淘网挑战百度意在造势 人才储备成最大障碍
  5. 年终总结 Trustdata:2017年中国移动互联网行业发展分析报告
  6. __main代码分析
  7. java插入数据库字符串拼接_java中PreparedStatement解决需转义字符向数据库中插入时的转义问题 | 学步园...
  8. mysql 优化器关联查询_MySQL 查询优化器(二)
  9. python数据分析实战案例logistic_Python机器学习随笔之logistic回归识别手写数字
  10. 做到阿里P7和考上985/211哪个更难?