现在有3到题目,麻烦大家给点意见
1.实现一个函数f(A,B),可以使用的运算有+12,-12,+7,-7,+5,-5 ,如何得到A-B的最短距离。
比如A=0和B=24,则0+12+12=24,这就是最短距离。2.比如百度一天的访问日志,日志只有一列,就是IP,现在要把重复的IP去除,如何做?
由于数据量比较大,我想到了几种方案:
a:用AWK,不知道AWK对这种大文件会不会报内存溢出的错误
b:把文件切割成若干个小文件,然后对每个文件进行过滤,最后在合并
c:用php的fseek函数,一段一段处理。
d:是否可以建一张哈希表,但是如何建, 用什么哈希函数不知道?(求大神解答,这一条很想知道)
不知道各位还有什么更高效的方法吗?对于大文件处理,经验比较少
3.就是做一个统计,如果百度首页添加一朵花,点击一下花,旁边的计数数字就加1,有什么实现方案?如何防刷?对于这个问题,我想实现不难,主要是如何防刷?我想到的是用IP在唯一标识,但是想到有些大公司的出口IP都是一个,这样的话,一个公司就只能投一次。还有比如联通的手机,内网IP也是一个。请问这个防刷的问题如何解决

解决方案 »

  1.   

    1.实现一个函数f(A,B),可以使用的运算有+12,-12,+7,-7,+5,-5 ,如何得到A-B的最短距离。
    比如A=0和B=24,则0+12+12=24,这就是最短距离。
    查表法function f($a, $b) {
      $c = abs($b - $a);
      $d = array(
        0 => '',
        1 => '+5+5+5-7-7',
        2 => '+7-5',
        3 => '+5+5-7',
        4 => '+7+7-5-5',
      );
      $r = str_repeat('+12', intval($c/12));
      $c %= 12;
      $r .= str_repeat('+12', intval($c/7));
      return $r . $d[$c % 5];
    }
      

  2.   


    请问这个$d = array(
        0 => '',
        1 => '+5+5+5-7-7',
        2 => '+7-5',
        3 => '+5+5-7',
        4 => '+7+7-5-5',
      );是什么意思
      

  3.   

    字典啊,要查表没表怎么行?2.比如百度一天的访问日志,日志只有一列,就是IP,现在要把重复的IP去除,如何做?
    哈希表 就用 ip 做键 
    php 提供有 ip2long 用于将 ip 转换成长整型数
    mysql 也提供了 INET_ATON
      

  4.   

    function f($a, $b) {
      $c = abs($b - $a);
      $d = array(
        0 => '',
        1 => '+5+5+5-7-7',
        2 => '+7-5',
        3 => '+5+5-7',
        4 => '+7+7-5-5',
      );
      $r = str_repeat('+12', intval($c/12));
      $c %= 12;
      $r .= str_repeat('+7', intval($c/7));
      $c %= 7;
      return $r . $d[$c % 5];
    }我修补了下,这样的好像才是正确的