牛客网:输出为空,请检查一下你的代码有没有循环输入处理多个case

示例代码是 PHP 

以【Redraiment是走梅花桩】这道题为例 https://www.nowcoder.com/practice/24e6243b9f0446b081b1d6d32f2aa3aa?tpId=37&tqId=21326&tPage=6&rp=  &ru=/ta/huawei&qru=/ta/huawei/question-ranking

输入

30
186 13 322 264 328 110 120 73 20 35 240 97 150 221 284 324 46 219 239 284 128 251 298 319 304 36 144 236 163 122

 输入是两行, 第一行 是数字的个数, 第二行是空格隔开的数字, 这只是一组数据, 会有多组所以要循环处理

 将输入输出 代码示例提取出来

 function getResult() {
    
    while (fscanf(STDIN , "%d" , $n) == 1) { // 第一行数字的个数, $n高级语言都用不到,C语言需要
        $numStr = @trim(fgets(STDIN));  // $n个数,简单起见 直接fgets 读取字符串 ,再切割, 一定要trim
        $input = explode(' ' ,$numStr);
        echo handleArray($input) . PHP_EOL; // 注意 此处一定要有 换行,否则结果会不正确
    }
}

总结: echo 要写在循环里,一般在输入的数据个数确定的 用 fscanf ,  不确定的时候直接fgets() 出来在处理; 多组数据的情况下放到 循环中处理;

 

完整示例:

<?php

function getResult() {
    
    while (fscanf(STDIN , "%d" , $n) == 1) { // 第一行数字的个数, $n高级语言都用不到,C语言需要
        $numStr = @trim(fgets(STDIN));  // $n个数,简单起见 直接fgets 读取字符串 ,再切割
        $input = explode(' ' ,$numStr);
        echo handleArray($input) . PHP_EOL; // 注意 此处一定要有 换行,否则结果会不正确
    }
}

function handleArray($input) {
    $overall[0] = 1;
    $length = count($input);
    for($i = 1; $i < $length; $i++ ) {
       
        $overall[$i] = 1;
        for($j = 0;  $j < $i; $j++) {
            if($input[$i] > $input[$j] && $overall[$j] + 1 > $overall[$i]) {
                $overall[$i] = $overall[$j] + 1;
            }
        }
    }
    return max($overall);
    }

 getResult();
?>

 

 

希望对你有帮助。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值