首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不必要的新行php

不必要的新行php
EN

Stack Overflow用户
提问于 2019-05-27 00:01:46
回答 1查看 53关注 0票数 0

我有一段PHP代码。代码应该打印输出,后面跟一个新行。代码运行良好,但我在末尾有不必要的新行。末尾应该只有一个换行符,但是我的代码打印了几个新行。可能的问题是什么?请帮帮忙。

代码语言:javascript
复制
<?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;
  }

?>

我的输入是

代码语言:javascript
复制
3
4
3 5 7 2
5
121 3 333 23 4
7
32 42 52 62 72 82 92

我的输出是

代码语言:javascript
复制
17
458
92
-
-
-
-

预期输出为

代码语言:javascript
复制
17
458
92
-

注意:我使用了'-‘来表示新行

我做错了什么?请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-27 00:13:25

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

另外,php结束标签不是必须的,我建议省略它们。

代码语言:javascript
复制
<?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;
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56315159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档