前提・実現したいこと
Atcoderの問題をPHPで解いていたところ2箇所で不正解が出てしまい、入力例は試したのですがどういう時に正解にならないのか、またその理由が知りたいです。初心者なのでお見苦しいと思いますがよろしくお願いします。
問題文
N枚のカードがあります.
i枚目のカードには, aiという数が書かれています.
Alice と Bob は, これらのカードを使ってゲームを行います. ゲームでは, Alice と Bob が交互に 1 枚ずつカードを取っていきます. Alice が先にカードを取ります.
2 人がすべてのカードを取ったときゲームは終了し, 取ったカードの数の合計がその人の得点になります. 2 人とも自分の得点を最大化するように最適な戦略を取った時, Alice は Bob より何点多く取るか求めてください.
以下リンク
https://atcoder.jp/contests/abs/tasks/abc088_b
発生している問題・エラーメッセージ
ケース6と8で不正解となります
該当のソースコード
phpここに言語名を入力
1<?php 2 $maisu = fgets(STDIN);// カードの枚数 3 $kazu = explode(' ', fgets(STDIN));//カードの数 4 $Alice = 0; 5 $Bob = 0; 6 $copyi = 0; 7for($kai=0;$kai<$maisu;$kai++){ 8 $max = 0;//最大値のリセット 9 for($i=0;$i<$maisu;$i++){ 10 if($kazu[$i] > $max){//最大値の更新 11 $copyi = $i; 12 $max = $kazu[$copyi]; 13 } 14 } 15 $kazu[$copyi] = 0; 16 switch($kai % 2){ 17 case 0://偶数回目 18 $Alice += $max; 19 break; 20 case 1://奇数回目 21 $Bob += $max; 22 break; 23 } 24} 25 echo ($Alice-$Bob);//アリスとボブの差 26?> 27
試したこと
入力例3つを試し10ケース中8は正解でした。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー