为了账号安全,请及时绑定邮箱和手机立即绑定

不必要的新行 php

不必要的新行 php

PHP
繁星淼淼 2021-06-30 13:59:30
我有一个 PHP 代码。该代码应该打印输出后跟一个新行。代码工作正常,但我最后有不必要的新行。最后应该只有一个换行符,但我的代码打印了几行新行。可能是什么问题?请帮忙。<?php  /* Read input from STDIN. Print your output to STDOUT*/  $fp = fopen("php://stdin", "r");  //Write code here  $loop = 0;  $n = 0; $arr = [];  while(!feof($fp)) {    $arr = []; $n = 0;    if($loop == 0) {      $total = fgets($fp);    }    else {      if($loop%2 == 1) {        $n = fgets($fp);      }      else {        $arr = fgets($fp);      }    }    if($loop > 0 && $loop%2 == 0) {      $arr = explode(" ", $arr);      $m = [];      for($i = 0; $i < 1<<10; $i++) {        $m[$i] = -1;      }      $n = count($arr);      $r = 0;      for($i = 0; $i < 1<<10; $i++) {        $r = max($r, fd_sum($i, $m, $arr, $n));      }      echo $r."\n";    }    $loop++;  }  fclose($fp);?><?php  function fd_sum($i, $m, $arr, $n) {    if($i == 0) {      return $m[$i] = 0;    }    else if($m[$i] != -1) {      return $m[$i];    }    else {        $rr = 0;        for($j = 0; $j < $n; $j++) {          $num = (int)$arr[$j];          $b = save($num);          if(($i | $b) == $i) {              $z = $i^save($num);              $y = fd_sum($z, $m, $arr, $n);              $v = ($y + $num);            $rr = max($v, $rr);          }        }        return $m[$i] = $rr;    }  }?><?php  function save($nm)  {    $x = 0;    for($i = 1; $nm/$i > 0; $i *= 10) {      $d = ($nm/$i) % 10;      $x = $x | (1 << $d);    }    return $x-1;  }?>我的输入是343 5 7 25121 3 333 23 4732 42 52 62 72 82 92我的输出是1745892----预期的输出是1745892-注意:我使用了“-”来表示新行我究竟做错了什么?请帮忙。
查看完整描述

1 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

PHP 解释器正在读取结束标记后的新行,然后将其作为输出立即吐出。删除额外的开始/结束标签应该删除额外的新行。


此外,php 结束标记不是必需的,我建议省略它们。


<?php

  /* Read input from STDIN. Print your output to STDOUT*/

  $fp = fopen("php://stdin", "r");

  //Write code here

  $loop = 0;

  $n = 0; $arr = [];

  while(!feof($fp)) {

    $arr = []; $n = 0;

    if($loop == 0) {

      $total = fgets($fp);

    }

    else {

      if($loop%2 == 1) {

        $n = fgets($fp);

      }

      else {

        $arr = fgets($fp);

      }

    }

    if($loop > 0 && $loop%2 == 0) {

      $arr = explode(" ", $arr);

      $m = [];

      for($i = 0; $i < 1<<10; $i++) {

        $m[$i] = -1;

      }

      $n = count($arr);


      $r = 0;

      for($i = 0; $i < 1<<10; $i++) {

        $r = max($r, fd_sum($i, $m, $arr, $n));

      }


      echo $r."\n";

    }


    $loop++;

  }

  fclose($fp);


  function fd_sum($i, $m, $arr, $n) {

    if($i == 0) {

      return $m[$i] = 0;

    }

    else if($m[$i] != -1) {

      return $m[$i];

    }

    else {

        $rr = 0;

        for($j = 0; $j < $n; $j++) {

          $num = (int)$arr[$j];

          $b = save($num);

          if(($i | $b) == $i) {

              $z = $i^save($num);

              $y = fd_sum($z, $m, $arr, $n);

              $v = ($y + $num);

            $rr = max($v, $rr);

          }


        }

        return $m[$i] = $rr;

    }

  }


  function save($nm)

  {

    $x = 0;

    for($i = 1; $nm/$i > 0; $i *= 10) {

      $d = ($nm/$i) % 10;

      $x = $x | (1 << $d);

    }

    return $x-1;

  }



查看完整回答
反对 回复 2021-07-09
  • 1 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信