Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <vector>#include <list>#include <queue>#include <math.h>using namespace std;int factorial[9] = { 1 };const int number[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };const int dir[4][2] = { { 1, 0 }, { -1, 0 }, { 0, 1 }, { 0, -1 } };inline int fact(int k){return factorial[k];}int num2order(int val){int n[9];for (int i = 8, v = val; i >= 0; i--, v /= 10) {n[i] = v % 10;}int a[9] = { 0 };int k = 0;for (int i = 0; i < 9; i++) {for (int j = i + 1; j < 9; j++) {if (n[j] < n[i])a[i]++;}k += a[i] * fact(8 - i);}