結果
| 問題 | No.3 ビットすごろく | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2015-05-20 19:30:37 | 
| 言語 | PHP (843.2) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 117 ms / 5,000 ms | 
| コード長 | 886 bytes | 
| コンパイル時間 | 3,188 ms | 
| コンパイル使用メモリ | 32,144 KB | 
| 実行使用メモリ | 34,616 KB | 
| 最終ジャッジ日時 | 2024-07-01 07:21:00 | 
| 合計ジャッジ時間 | 6,537 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 33 | 
コンパイルメッセージ
No syntax errors detected in Main.php
ソースコード
<?php
$n = trim(fgets(STDIN));
$visited = array();
$maxtime = -1;
move(1,1,1);
echo $maxtime.PHP_EOL;
function move ( $prev, $start, $time ) {
	global $n, $visited, $maxtime;
	if ( ($start < 1) || ($start > $n) ) {				// 範囲外
		return;
	}
	if ( ($maxtime != -1) && ($maxtime <= $time) ) {	// 移動回数多すぎ
		return;
	}
	
	// ゴール到着
	if ( $start == $n ) {
		$maxtime = $time;
		return;
	}
	
	if ( isset($visited[$start-1]) === TRUE ) {			// 訪問済
		if ( $visited[$start-1] <= $time ) {			// ルート問わず、高コストで到達してしまった
			return;
		}
	}
	$visited[$start-1] = $time;
	$bit = decbin($start);
	$counts = count_chars($bit, 1);
	$count = $counts[ord('1')];
	$time++;
	if ( ($start+$count) != $prev ) {
		move($start, $start+$count, $time);
	}
	if ( ($start-$count) != $prev ) {
		move($start, $start-$count, $time);
	}
	
	return;
}
            
            
            
        