結果
| 問題 | No.228 ゆきこちゃんの 15 パズル | 
| コンテスト | |
| ユーザー |  chocorusk | 
| 提出日時 | 2019-08-04 19:03:19 | 
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 2 ms / 5,000 ms | 
| コード長 | 1,463 bytes | 
| コンパイル時間 | 661 ms | 
| コンパイル使用メモリ | 97,116 KB | 
| 実行使用メモリ | 5,376 KB | 
| 最終ジャッジ日時 | 2024-07-08 13:58:25 | 
| 合計ジャッジ時間 | 1,367 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 17 | 
ソースコード
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
#include <cmath>
#include <bitset>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <algorithm>
#include <complex>
#include <unordered_map>
#include <unordered_set>
#include <random>
#include <cassert>
#include <fstream>
#define popcount __builtin_popcount
using namespace std;
typedef long long int ll;
typedef pair<int, int> P;
int dx[4]={1, 0, -1, 0}, dy[4]={0, 1, 0, -1};
bool check(int x, int y){
    if(x<0 || x>=4 || y<0 || y>=4) return false;
    else return true;
}
int a[4][4], b[4][4];
int main()
{
    for(int i=0; i<4; i++) for(int j=0; j<4; j++) b[i][j]=1+i*4+j;
    for(int i=0; i<4; i++) for(int j=0; j<4; j++) cin>>a[i][j];
    b[3][3]=0;
    while(1){
        bool ok=1;
        int zx, zy;
        for(int i=0; i<4; i++){
            for(int j=0; j<4; j++){
                if(a[i][j]!=b[i][j]) ok=0;
                if(b[i][j]==0) zx=i, zy=j;
            }
        }
        if(ok){
            cout<<"Yes"<<endl;
            return 0;
        }
        ok=0;
        for(int k=0; k<4; k++){
            int x1=zx+dx[k], y1=zy+dy[k];
            if(!check(x1, y1)) continue;
            if(a[zx][zy]==b[x1][y1]){
                swap(b[x1][y1], b[zx][zy]);
                ok=1;
                break;
            }
        }
        if(!ok){
            cout<<"No"<<endl;
            return 0;
        }
    }
    return 0;
}
            
            
            
        