首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求判断数组延续个数的函数

2014-01-17 
求判断数组连续个数的函数多次尝试总是错误,所以请教高手指点迷津。函数想要得到想过如下:数组A,2,5,7,8,9,

求判断数组连续个数的函数
多次尝试总是错误,所以请教高手指点迷津。
函数想要得到想过如下:
数组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;
}

热点排行