結果
| 問題 |
No.228 ゆきこちゃんの 15 パズル
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-05-13 09:48:20 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 8 ms / 5,000 ms |
| コード長 | 1,093 bytes |
| コンパイル時間 | 903 ms |
| コンパイル使用メモリ | 75,888 KB |
| 最終ジャッジ日時 | 2025-01-29 06:26:00 |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 17 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:21:17: warning: ‘zerox’ may be used uninitialized [-Wmaybe-uninitialized]
21 | while(!(zerox == 3 && zeroy == 3)){
| ~~~~~~^~~~
main.cpp:7:7: note: ‘zerox’ was declared here
7 | int zerox,zeroy;
| ^~~~~
main.cpp:21:31: warning: ‘zeroy’ may be used uninitialized [-Wmaybe-uninitialized]
21 | while(!(zerox == 3 && zeroy == 3)){
| ~~~~~~^~~~
main.cpp:7:13: note: ‘zeroy’ was declared here
7 | int zerox,zeroy;
| ^~~~~
ソースコード
#include <iostream>
#include <vector>
using namespace std;
pair<int,int> ar4[4] = {{0,1},{0,-1},{1,0},{-1,0}};
int main(){
vector<vector<int>> A(4,vector<int>(4)),B(4,vector<int>(4));
int zerox,zeroy;
int nw = 1;
for(int i = 0; 4 > i; i++){
for(int j = 0; 4 > j; j++){
cin>>A[i][j];
B[i][j] = nw;
nw++;
if(A[i][j] == 0){
zerox = i;
zeroy = j;
}
}
}
B[3][3] = 0;
while(!(zerox == 3 && zeroy == 3)){
bool next = false;
for(int i = 0; 4 > i; i++){
if(0 <= zerox+ar4[i].first && zerox+ar4[i].first < 4 && 0 <= zeroy+ar4[i].second && zeroy+ar4[i].second < 4 && A[zerox+ar4[i].first][zeroy+ar4[i].second] == B[zerox][zeroy]){
swap(A[zerox][zeroy],A[zerox+ar4[i].first][zeroy+ar4[i].second]);
zerox+=ar4[i].first;
zeroy+=ar4[i].second;
next = true;
break;
}
}
if(!next)break;
}
for(int i = 0; 4 > i; i++){
for(int j = 0; 4 > j; j++){
if(A[i][j] != B[i][j]){
cout << "No" << endl;
return 0;
}
}
}
cout << "Yes" << endl;
}