链接:https://ac.nowcoder.com/acm/contest/2272/A
来源:牛客网
题目描述
帕秋莉掌握了一种水属性魔法
在此之前,她已经忍了雾之湖上的妖精们很久了
现在,她决定反击!
雾之湖上有n只妖精排成一列,每只妖精的飞行高度严格单调递增,且高度1≤x≤1000
帕秋莉能清除掉列里面一个连续子区间的妖精,当且仅当它们被清理之后,帕秋莉仍然能还原出这个子区间的所有妖精的飞行高度
如,若妖精们飞行高度为1,3,4,5,6,8,那么可以清理飞行高度为4,5的两只妖精,因为清理之后,这两个空位之间的数据是唯一确定的
帕秋莉一次最多选择清除一个连续子区间,请问帕秋莉一次最多能清除多少妖精呢?
输入描述:
第一行一个整数n,表示有n只妖精下一行n个数ai,表示每只妖精飞行高度
输出描述:
输出一行,一个整数表示答案
示例1
输入
复制
3
998 999 1000
输出
复制
2
备注:
对于30%的数据,n≤100对于100%的数据,n≤1,000
解题思路:
求连续的数最多有多少个。需要注意打一个数是1和最后一个数是1000.
#include <bits/stdc++.h>
using namespace std;
const int N = 1020;
int a[N];
int main()
{
int n;
while(scanf("%d", &n)!=EOF)
{
for(int i=0; i<n; i++)
scanf("%d", &a[i]);
int ans = 0;
int point = 1;
if(a[0]==1)
point+=2;
for(int i=1; i<n-1; i++)
{
if(a[i]-a[i-1]==1){
point++;
}
else {
ans = max(ans, point-2);
point = 1;
}
}
if(a[n-1]==1000) {
point+=2;
ans = max(ans, point-2);
}
if(n==1000)
ans-=2;
printf("%d\n", ans);
}
return 0;
}