SGU 139.Help Needed!

题意:

       判断15数码问题是否有解。

 


 

       如果0的偏移量和逆序对个数同奇偶则无解。

       因为目标状态的偏移量为0,逆序对为15,而0移动的时候偏移量±1,逆序对的改变量为也为奇数。

       这就使得偏移量和逆序对数始终不是同奇偶。

       更多证明:http://blog.csdn.net/hnust_xiehonghao/article/details/7951173

#include <stdio.h>
using namespace std;
int a[16], res;
int main()
{
    for (int i = 0; i < 16; ++i)
    {
        scanf("%d", &a[i]);
        if (!a[i]) res = 6 - (i % 4) - i / 4;
    }
    for (int i = 0; i < 15; ++i)
        for (int j = i + 1; j < 16; ++j)
            if (a[i] > a[j]) res++;
    if (res & 1) printf("YES");
       else      printf("NO");
    return 0;
}

  

 
posted @ 2014-07-09 15:44  keambar  阅读(169)  评论(0编辑  收藏  举报