原地址:
http://topic.csdn.net/u/20110512/22/5c37e8f6-fbd6-4fa7-8053-670a02b68107.html
怎样检测数组(数字是5~11位的)里数据为连续的3位数,4位数,5位数,6....
 
(下面的分是我任意给的.我可以任意修改)
如果是10位连续的..就输出  100分
如果是9位连续的.. 就输出   92分
如果是8位连续的.. 就输出   72分
如果是7位连续的.. 就输出   62分
如果是6位连续的.. 就输出   52分
如果是5位连续的.. 就输出   42分
如果是4位连续的.. 就输出   34分
如果是4位连续的.. 就输出   30分

解决方案 »

  1.   

    //前面那个帖子中的代码稍微修改一下就可以了
    $arr = array(4,7,0,2,4,5,6,9,1,2,3,4,5,6,8,0);
    $arrPrice = array(3 => 30, 4 => 34, 5 => 42, 6 => 52, 7 => 62); //分值设置
    $counter =$counterMax = 1;
    for($i = 0; $i < count($arr) - 1; $i ++) {
       if ($arr[$i + 1] == $arr[$i] + 1) {
          $counter ++;
          if ($counter > $counterMax) $counterMax ++;
       }
       else $counter = 1;
    }
    if ($counterMax >= 4) echo "检测到{$counterMax}位连续数字,得分为{$arrPrice[$counterMax]}分";
      

  2.   

    这个意思?
    $ar = array(4,7,0,2,4,5,6,9,1,2,3,4);$score = array( 3=> 30, 34, 42, 52, 62, 72, 92, 100);echo $score[ continuous_num_check($ar) ];function continuous_num_check($p) {
      $t = 1;
      for($i=1; $i<count($p); $i++) {
        if($p[$i] == $p[$i-1]+1) $t++;
        else {
          $m[] = $t;
          $t = 1;
        }
      }
      $m[] = $t;
      return max($m);
    }
      

  3.   

    long sum = 1234;
                int a = 0;
                int[] nums = new int[sum.ToString().Length];
                int b = 0;
                for (int i = 0; i < sum.ToString().Length; i++)
                {
                    a = Convert.ToInt32(sum.ToString().Substring(i,1));
                    nums[i] = a;
                }            for (int i = 0; i < sum.ToString().Length-1; i++)
                {
                    if (nums[i] + 1 == nums[i + 1])
                        b++;
                }
                if(b == sum.ToString().Length-1)
                {
                    b++;
                    switch (b)
                    {
                        case 3:
                            Console.WriteLine("32");
                            break;
                        case 4:
                            Console.WriteLine("42");
                            break;
                        case 5:
                            Console.WriteLine("52");
                            break;
                        case 6:
                            Console.WriteLine("62");
                            break;
                        case 7:
                            Console.WriteLine("72");
                            break;
                        case 8:
                            Console.WriteLine("82");
                            break;
                        case 9:
                            Console.WriteLine("92");
                            break;
                    }
                }
                Console.Read();