hdu多校第四场 1007 (hdu6620) Just an Old Puzzle 逆序对

题意:

给你一个数字拼图,问你数字拼图能否能复原成原来的样子。

题解:

数字拼图的性质是,逆序数奇偶相同时,可以互相转化,逆序数奇偶不同,不能互相转化。

因此统计逆序对即可。

#include<iostream>
using namespace std;
int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        int a[20];
        int kg;
        for(int i=1;i<=16;i++){
            scanf("%d",&a[i]);
            if(a[i]==0)kg=i;
        }
        while(kg%4){
            swap(a[kg],a[kg+1]);
            kg++;
        }
        while(kg%16){
            swap(a[kg],a[kg+4]);
            kg+=4;
        }
        int nxd=0;
        for(int i=1;i<15;i++){
            for(int j=i+1;j<=15;j++){
                if(a[j]<a[i])nxd++;
            }
        }
        if(nxd%2==0)printf("Yes\n");
        else printf("No\n");
    }
    return 0;
}

 

posted @ 2019-07-31 23:19  Isakovsky  阅读(305)  评论(0编辑  收藏  举报