AtCoder Beginner Contest 087 C問題のPHPでの私なりの解法
<?php
$step = trim(fgets(STDIN));
$rows = [];

while (($row = trim(fgets(STDIN))) !== '') {
    $rows[] = explode(' ', $row);
}

$memo = [];

for ($i=0; $i < $step; $i++) {
    $result = 0;
    for ($j=0; $j <= $i; $j++) {
        $result += $rows[0][$j];
    }
    for ($j=$i; $j < $step; $j++) {
        $result += $rows[1][$j];
    }
    $memo[] = $result;
}

echo max($memo)."\n";

Comment

  1. たけぱん より:

    わー、PHPの人だーっ!珍しい!
    ということで、積極的に絡みに来ましたー
    たけぱん と申す者ですー

    “`
    <?php

    ini_set('error_reporting', E_ALL & ~E_NOTICE);

    fscanf(STDIN, "%d", $N);
    $A[] = explode(" ", trim(fgets(STDIN)));
    $A[] = explode(" ", trim(fgets(STDIN)));

    $ans = $cur = $A[0][0] + array_sum($A[1]);

    for ($i = 0; $i < $N; $i++) {
    $cur = $cur + $A[0][$i+1] – $A[1][$i];
    $ans = max($ans, $cur);
    }

    echo $ans . PHP_EOL;
    “`

    こんな感じにすると、多重ループを使わないので、計算量が減らせますー

    もしよかったら参考にしてみてください。ではー

    • コメントありがとうございます!
      スマートな実装で大変参考になりました、
      これからも時々覗きに来てくださると嬉しいです( ´∀`)

くちばゆっち へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*
*