<?php
$zdarr = array(0 => 4,
    1 => 4,
    2 => 7,
    3 => 3,
    4 => 1,
    5 => 1,
    6 => 2,
    7 => 1,
    8 => 3,
    9 => 1,
    10 => 1,
    11 => 1,
    12 => 1);echo zdlcs($zdarr);/*
 *计算最大连出数
 */
function zdlcs($arr){
$count = count($arr); //这中间怎么写啊?? return 4;
}?>

解决方案 »

  1.   

    楼主的意思是想得到至少有两次重复的数中的最大数是吧?$a = array(0   =>   4, 
            1   =>   4, 
            2   =>   7, 
            3   =>   3, 
            4   =>   1, 
            5   =>   1, 
            6   =>   2, 
            7   =>   1, 
            8   =>   3, 
            9   =>   1, 
            10   =>   1, 
            11   =>   1, 
            12   =>   1); function GetMaxRepeat($arr){
    $count = array_count_values($arr);
    foreach($count as $key=>$value){
    if($value>1){
    $newstr[]=$key;
    }
    }
    return max($newstr);
    }
    echo GetMaxRepeat($a);//返回4
      

  2.   

    $a=array(0=>4, 1=>4, 2=>7, 3=>3, 4=>1, 5=>1, 6=>2, 7=>1, 8=>3, 9=>1, 10=>1, 11=>1, 12=>1); function zdlcs($arr){ 
      rsort($arr);
      $i=0;
      foreach($arr as $value){ 
        if($value==$i){
           return $value;
        }
        $i=$value;
      }
    } echo zdlcs($a);
      

  3.   

    应该是值一样的,连续的个数吧???使用
    foeach ,并用一个值保存当前的的值,如果相等,则个数 +1
    如果不等,则重新赋那个标志的值,个数设为 1
      

  4.   

    菜鸟飞过...function   zdlcs($arr){
    $m = 1;$arr2 = array();
    $count = count($arr);
    for($i = 0;$i<$count;$i++){
    for($j = $i+1;$j<=$count;$j++){
    if($arr[$j]==$arr[$i]){
    $m++;
    }
    else{
    $arr2[] = $m;
    $m = 1;
    break;
    }
    }
    }
    rsort($arr2);
    return $arr2[0];
    }
      

  5.   

    //来一个只需遍历一次的$zdarr   =   array(0   =>   4,
            1   =>   4,
            2   =>   7,
            3   =>   3,
            4   =>   1,
            5   =>   1,
            6   =>   2,
            7   =>   1,
            8   =>   3,
            9   =>   1,
            10   =>   1,
            11   =>   1,
            12   =>   1,
            13  =>  4
        );function test($zdarr)
    {
        $count = 0;
        $max = 0;
        foreach($zdarr as $v) {
            if($v == $value) {
                $count++;
            }
            else {
                $value = $v;
                $count = 1;
            }
            if($count>$max) {
                $max = $count;
            }
        }    return "$max";
    }
    exit(test($zdarr));//4
      

  6.   


    <?php $zdarr   =   array(0   =>   4, 
            1   =>   4, 
            2   =>   7, 
            3   =>   3, 
            4   =>   1, 
            5   =>   1, 
            6   =>   2, 
            7   =>   1, 
            8   =>   3, 
            9   =>   1, 
            10   =>   1, 
            11   =>   1, 
            12   =>   1); function zdlcs($zdarr)
    {
        $max = 0;
    $count=1;
        foreach ($zdarr  as $key=>$v) {
           if ($zdarr[$key+1]==$v ){
       $count = $count+1;
       }
       elseif($max<$count){
       $max=$count;
       $count = 1;
       }
       else{
       $count = 1;
       }
        }    return "$max";
    }
    exit(zdlcs($zdarr));
      

  7.   


    <?php 
    $zdarr   =array(0=> 4, 
            1   =>   4, 
            2   =>   7, 
            3   =>   3, 
            4   =>   2, 
            5   =>   2, 
            6   =>   2, 
            7   =>   2, 
            8   =>   2, 
            9   =>   2, 
            10   =>  2, 
            11   =>  1, 
            12   =>  1); echo $a= zdlcs($zdarr); 
    //print_r($a);
    /* 
      *计算最大连出数 
      */ 
    function   zdlcs($arr){ 
    $count   =   count($arr);
    $brr=implode($arr);
    $crr=array();
    for($i=1;$i<=9;$i++){
    $mode="/[$i]/";
    $num=preg_match_all($mode,$brr,$drr);
    if($num>=1){
    $crr[$i]=$num;
    }}
    //rsort($crr);
    for($j=1;$j<count($crr);$j++){
    for($k=1;$k<count($crr);$k++){
    if($j!=$k){
    if($crr[$j]<$crr[$k]){
    break;
    }else
    {
    return $j;
    }
    } }
    }}?> 
      

  8.   

    4楼是对的。
    不过我们公司有个小弟用另外一种方式算出来的。
    $b = array(0=>4,
    1=>5,
    2=>8,
    3=>9,
    4=>10,
    5=>13);
    /**
     * 计算最大连出数
     *
     * @param $arr 被计算的数组
     *
     * @return max($tmp) 最大连出数
     *
     */
    function zdlccs($arr){
    array_push($arr,'');
    $geshu = 1;
    foreach($arr as $key => $value){
    if($key == 0) continue;
    if(($value - $arr[$key-1])==1){
    $geshu++;
    }else{
    $tmp[]=$geshu;
    $geshu = 1;
    }
    }
        return max($tmp);
    }
    echo zdlccs($b);  //返回3