結果
問題 | No.228 ゆきこちゃんの 15 パズル |
ユーザー |
![]() |
提出日時 | 2015-06-19 22:32:53 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 1,453 bytes |
コンパイル時間 | 615 ms |
コンパイル使用メモリ | 96,260 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-07 04:06:08 |
合計ジャッジ時間 | 1,204 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 17 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:36:30: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 36 | scanf("%d", &a[i][j]); | ~~~~~^~~~~~~~~~~~~~~~
ソースコード
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cctype>#include<cstdlib>#include<algorithm>#include<bitset>#include<vector>#include<list>#include<deque>#include<queue>#include<map>#include<set>#include<stack>#include<cmath>#include<sstream>#include<fstream>#include<iomanip>#include<ctime>#include<complex>#include<functional>#include<climits>#include<cassert>#include<iterator>#include<unordered_map>using namespace std;#define MAX 4int a[MAX][MAX];int b[MAX][MAX];int dx[] = { 0, 0, 1, -1 };int dy[] = { 1, -1, 0, 0 };int main(){for (int i = 0; i < MAX; i++){for (int j = 0; j < MAX; j++){scanf("%d", &a[i][j]);}}int cc = 0;for (int i = 0; i < MAX; i++){for (int j = 0; j < MAX; j++){cc++;cc %= 16;b[i][j] = cc;}}bool up = true;while (up){int x = 0;int y = 0;for (int i = 0; i < MAX; i++){for (int j = 0; j < MAX; j++){if (b[i][j] == 0){x = i;y = j;}}}up = false;for (int k = 0; k < 4; k++){int xx = x + dx[k];int yy = y + dy[k];if (xx >= 0 && yy >= 0 && xx < MAX&&yy < MAX){if (b[xx][yy] != a[xx][yy]){if (a[x][y] == b[xx][yy]){swap(b[xx][yy], b[x][y]);up = true;break;}}}}}for (int i = 0; i < MAX; i++){for (int j = 0; j < MAX; j++){if (a[i][j] != b[i][j]){puts("No");return 0;}}}puts("Yes");return 0;}