問題蟲洞:C - Just an Old Puzzle HDU - 6620
黑洞內窺:
給你一個4x4的數字華容道,,問你可不可以在120步之內還原。。。。。
思維光年:
隊友老是覺得可以爆搜這道題,,,,
於是我們現場下載了一個<數字華容道>的app玩了一下,,
發現遊戲裏的華容道總是有解的,我也很絕望啊。
正確而富有理性的求解:
序列從左往右拿起。。
即,當逆序對個數的奇偶性和完成時 空格所在行和初始時 空格所在行的的差奇偶性相同時纔有解
ACcode:
//#include<bits/stdc++.h>
#include <stdio.h>
#include <iostream>
#include<algorithm>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <stack>
#include <stdlib.h>
#include <cstring>
#include <string.h>
#include <string>
#include <math.h>
#include <sstream>
using namespace std;
typedef long long ll;
#define MAXN 10005
#define INF 0x3f3f3f3f//將近ll類型最大數的一半,而且乘2不會爆ll
const ll mod = 1000000007;
int a[20];
int main()
{
int t;
cin >> t;
while(t--)
{
int c, d=4, ans=0;
for(int i=1; i<=16; ++i)
{
scanf("%d", &a[i]);
if(a[i] == 0)
c = (i-1)/4 + 1;//空格所在行
}
for(int i=1; i<=16; ++i)
{
if(a[i])
for(int j=i+1; j<=16; ++j)
if(a[j])
if(a[i] > a[j]) //初始逆序數爲ans,完成時爲0
ans++;
}
if(ans%2 == (d-c)%2) puts("Yes");
else puts("No");
}
return 0;
}