結果

問題 No.3 ビットすごろく
ユーザー Grenache
提出日時 2015-07-01 10:28:44
言語 Java
(openjdk 23)
結果
AC  
実行時間 150 ms / 5,000 ms
コード長 976 bytes
コンパイル時間 3,885 ms
コンパイル使用メモリ 78,156 KB
実行使用メモリ 41,764 KB
最終ジャッジ日時 2024-07-01 07:27:31
合計ジャッジ時間 9,390 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 33
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.util.ArrayDeque;
import java.util.Queue;
import java.util.Scanner;


public class Main_yukicoder3 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();

        int[] dp = new int[n];
        Queue<Integer> st = new ArrayDeque<Integer>();

        dp[0] = 1;
        st.add(1);
        while(!st.isEmpty()) {
        	int now = st.remove();
        	if (now == n) {
        		break;
        	}
        	
        	int d = Integer.bitCount(now);
        	if (now + d <= n && dp[now + d - 1] == 0) {
        		dp[now + d - 1] = dp[now - 1] + 1;
        		st.add(now + d);
        	}
        	if (now - d >= 1 && dp[now - d - 1] == 0) {
        		dp[now - d - 1] = dp[now - 1] + 1;
        		st.add(now - d);
        	}
        }

        if (dp[n - 1] != 0) {
        	System.out.println(dp[n - 1]);
        } else {
        	System.out.println(-1);
        }
        
        sc.close();
    }
}
0