求判断数组连续个数的函数
多次尝试总是错误,所以请教高手指点迷津。
函数想要得到想过如下:
数组A, 2,5,7,8,9,20.//期望得到的连续数字个数为3
数组B, 1,2,3,4,5,8.//期望得到的连续数字个数为5
数组C, 8,20,5,6,7.//期望得到的连续数字个数为3
[解决办法]
或者这么描述。设置两个变量,最大连续长度max, 当前连续长度cur, 两个都初始化为1,并认为数组的第一个元素已经被处理,从第二个元素开始处理。如果当前元素刚好比前一个元素多1,则++cur, 否则如果cur>max, 则max=cur, cur=1...重复以上直到数组结束,返回max
template <class Int, ForwardInter I>
unsigned Streak(I first, I end)
{
Int prev;
unsigned max=1, cur=1;
if(first==end)
return 0;
prev=*first++;
while(first!=end)
{
if(*first==++prev)
++cur;
else{
if(cur>max)
max=cur;
cur=1;
prev=*first;
}
++first;
}
}
long GetCNum(int *x,int n)
{
if(NULL==x) return 0;
int pNum=*x;
long count=1;
long cMax=1;
for(int i=1;i<n;i++)
{
pNum++;
if(*(x+i)==pNum)
{
count++;
}
else
{
if(cMax<count) cMax=count;
count=1;
pNum=*(x+i);
}
}
if(cMax<count) cMax=count;
if(cMax==1) return 0;
return cMax;
}
int main(int argc, char* argv[])
{
int n[8]={1,2,3,5,7,8,9,10};
int c=GetCNum(n,8);
printf("最大连续数是:%d\n",c);
retur 0;
}