結果
| 問題 |
No.228 ゆきこちゃんの 15 パズル
|
| コンテスト | |
| ユーザー |
YamaKasa
|
| 提出日時 | 2018-09-04 00:01:10 |
| 言語 | Java (openjdk 23) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,333 bytes |
| コンパイル時間 | 2,679 ms |
| コンパイル使用メモリ | 77,124 KB |
| 実行使用メモリ | 41,856 KB |
| 最終ジャッジ日時 | 2024-10-10 02:37:07 |
| 合計ジャッジ時間 | 6,703 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 16 WA * 1 |
ソースコード
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[][]p = new int[4][4];
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 4; j++) {
p[i][j] = scan.nextInt();
}
}
scan.close();
int r0 = 0;
int c0 = 0;
int cnt = 0;
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 4; j++) {
int t = p[i][j];
if(t == 0) {
r0 = i;
c0 = j;
continue;
}
int l = len(t, i, j);
if(l >= 2) {
System.out.println("No");
System.exit(0);
}else if(l == 1) {
cnt ++;
}
}
}
int []dx = {1, -1, 0, 0};
int []dy = {0, 0, 1, -1};
boolean flag = true;
for(int i = 0; i < cnt; i++) {
flag = true;
for(int j = 0; j < 4; j++) {
int nr = dx[j] + r0;
int nc = dy[j] + c0;
if(nr < 0 || nc < 0 || nr > 3 || nc > 3) {
continue;
}
int k = p[nr][nc];
int l = len(k, nr, nc);
if(l == 1) {
r0 = nr;
c0 = nc;
flag = false;
break;
}
}
if(flag) {
System.out.println("No");
System.exit(0);
}
}
System.out.println("Yes");
}
static int len(int n, int nr, int nc) {
int r = n / 4;
int c = n % 4;
if(c == 0) {
c = 3;
r -= 1;
}else {
c -= 1;
}
int l = Math.abs(nr - r) + Math.abs(nc - c);
return l;
}
}
YamaKasa