有200条记录,每条记录由8个1-80的数字组成要求取出'含羞号'和'连开号'
含羞号:连续N次没有出现的数字,按N进行降序显示.
连开号:连续N次出现的数字,按N进行降序显示.
(N就是某个数字出现的次数)

解决方案 »

  1.   

    我的想法:把200条记录取出来放在一个二维数组中,第一维是1-80,$result[][], 第二维是如果从数据库中有这个值,就填写值,如果没有,就赋值0,然后for(1->80)循环
    for($i=0;$i<80;$i++){
      for($j=0;$j<count($result[$i]);$j++){
       if($result[$i][$j] == 0){
         $s[$i] ++;
         $b[$i] = 0;
       }else{
         $s[$i] = 0;
         $b[$i] ++;
       }  
     }
    }$s 就是含羞号数组
    $b 就是连开号数组
    然后排序我写的只提供思路。
      

  2.   

    谢谢各位,
    算法出来了,不过有点乱,请这位点评while($rows=mysql_fetch_array($results)){
    $num=explode("-",$rows[0]);
    $i+=1;
    $nums[$i]=$num;
    }
    for($i=1;$i<=20;$i++){
      for($j=1;$j<=80;$j++){
        if(in_array($j,$nums[$i])){
            if($liankai[$j]>=0 and $liankai[$j]<200 and ($hanxiu[$j]==0 or intval($hanxiu[$j])==(0-200))){
    $liankai[$j]++;
    $hanxiu[$j]=-200;
    }else{
        if($hanxiu[$j]!=-200){$hanxiu1[$j]=$hanxiu[$j];$hanxiu[$j]=-200;}
        else{$hanxiu[$j]=-200;}
    }
         }else{
    if($hanxiu[$j]<=0 and (intval($hanxiu[$j])>(0-200)) and ($liankai[$j]==0 or $liankai[$j]==200)){
    $hanxiu[$j]-=1;
    $liankai[$j]=200;
    }else{
      if($liankai[$j]!=200){$liankai1[$j]=$liankai[$j];$liankai[$j]=200;}
      else{$liankai[$j]=200;}
    }
    }
    }
    }
    asort($hanxiu1);
    arsort($liankai1);
    echo "-------------------------------------------------------------------<br />";
    print_r($liankai1);
    echo "-------------------------------------------------------------------<br />";
    print_r($hanxiu1);
    ?>