結果
| 問題 | No.3 ビットすごろく |
| コンテスト | |
| ユーザー |
jp_ste
|
| 提出日時 | 2016-02-12 04:13:03 |
| 言語 | Java (openjdk 23) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,070 bytes |
| コンパイル時間 | 2,554 ms |
| コンパイル使用メモリ | 77,996 KB |
| 実行使用メモリ | 98,496 KB |
| 最終ジャッジ日時 | 2024-09-22 04:05:09 |
| 合計ジャッジ時間 | 19,421 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 12 WA * 21 |
ソースコード
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
scan.close();
boolean flag[] = new boolean[N+1];
int ans = Integer.MAX_VALUE;
Queue<Node> q = new LinkedList<>();
q.add(new Node(1,1));
while(!q.isEmpty()) {
Node v = q.poll();
if(v.number == N) {
ans = Math.min(ans, v.number);
continue;
}
flag[v.number] = true;
int nextRight = v.number + (Integer.bitCount(v.number));
if(nextRight <= N && !flag[nextRight]) {
q.add(new Node(nextRight, v.steps+1));
}
int nextLeft = v.number - (Integer.bitCount(v.number));
if(nextLeft >= 1 && !flag[nextLeft]) {
q.add(new Node(nextLeft, v.steps+1));
}
}
if(ans == Integer.MAX_VALUE) {
System.out.println("-1");
} else {
System.out.println(ans);
}
}
}
class Node {
int number;
int steps;
Node(int number , int steps) {
this.number = number;
this.steps = steps;
}
}
jp_ste