洛谷P1420-最长连号
这个题目很入门,但是我第一次做怎么做都做不出来,看了几个代码,方法各式各样,这个我是我觉得最通俗易懂的一个,
循环外面的两个输入第一个cin是个数第二个是输入的第一个数,所以下面for循环的条件减了一,当输入第二个数的时候,将该数与之前第一次输入的数相比较temp是否等于b+1如果是的话计数值就++,如果没有的话最长连续就应该是初始值,判断最后要输出的值ans与此时max谁大,最后更新前一次的值p。这个方法真的让我一眼明白
#include<iostream>
using namespace std;
/*
* ans:答案;temp:现在这个数;
*
* b:前一个数;max:这个序列的最大长度
*/
int main()
{
int n,ans=0,temp,b,max=1;
cin>>n;
cin>>b; //输入,初始化b
for(int i=1;i<=n-1;i++)
{
cin>>temp;
if(temp==b+1) max++; //如果这个数是前一个数加1,最大值就增大1
else max=1; //否则max回到初始值
if(ans<max) ans=max; //如果最大值比当前的答案大,更改答案
b=temp; //b=当前这个数
}
cout<<ans; //输出
return 0;
}