听老歌 发表于 2011-05-21 18:18

Look And Say 序列

Look And Say 序列


Look And Say序列,简单的说就是根据你看到的数字,写出下一个数字。比如:

第一个数字是:1。

看着第一个数字你可以说1个1,那么第二个数字就是:11。

看着第二个数字你可以说2个1,即第三个数字是:21。

看着第三个数字你可以说1个2,1个1,即第四个数字是:1211。

看着第四个数字你可以说1个1,1个2,2个1,即第五个数字是:111221。

…………

根据详细的说明可以参见:http://en.wikipedia.org/wiki/Look-and-say_sequence

下面用PHP实现这个序列,如下:
function look($str){
      $len = strlen($str);
      $count=0;      $result='';
      $temp=$str;
      for($i=0;$i<$len;$i++)
      {
         if($temp!=$str[$i])
            {
                $result.=$count.$temp;
                              $temp = $str[$i];
                $count=1;
            }
            else
         {
               $count++;
            }      }
      $result.=$count.$temp;
      return $result;
}    $test_str = "1";
echo $test_str.'</br>';
for($i=0;$i<10;$i++){
       $test_str=look($test_str);
      print $test_str."</br>";}注意look函数中的for循环,当$len-1时,$result并未累加最后一位数字的统计结果,所以在循环完成后再次累加一次。

最后输出结果:

1
11
21
1211
111221
312211
13112221
1113213211
31131211131221
13211311123113112211
11131221133112132113212221
页: [1]
查看完整版本: Look And Say 序列