BFS拓展 康拓展開

2021-08-21 06:02:38 字數 709 閱讀 1127

(原諒我我實在不想粘題目了)

這道題吧,本來不想加進來的。。其實就是對於八數碼問題的乙個補充,上面可愛的出題人已經將康拓展開講的很清楚了。照著敲就行。

#include 

using

namespace

std;

typedef

long

long ll;

inline ll read()

const ll maxn = 3e3 + 1;

const ll mod = 1e9 + 7;

ll a[maxn];

ll n;

ll cantor(ll s)

}ll fac = 1;

for (ll j = 1 ; j <= n - i ; j ++)

sum += (cnt * fac) % mod;

sum %= mod;

}return sum + 1;

}int main()

printf("%lld\n" , cantor(a));

}

康拓展開和逆康拓展開

康托展開就是一種特殊的雜湊函式 把乙個整數x展開成如下形式 x a n n a n 1 n 1 a 2 2 a 1 1 其中,a為整數,並且0 a表示1,2,3,n的排列如 按從小到大排列一共6種,就是123 132 213 231 312 321 代表的數字 1 2 3 4 5 6 也就是把10進...

康拓展開與逆康拓展開

首先解釋一下,所謂的康拓展開,就是能夠通過乙個式子,得到乙個排列在所有排列中的按字典序排好後的位次。而逆康托展開,則是給出排列的位次,能夠計算出排列是什麼。下面先給出康拓展開的公式 其中ai 為整數,並且 0 ai ai表示原數的第 i位在當前未出現的元素中是排在第幾個 康拓展開是乙個雙射,因此常用...

康拓展開和逆康拓展開

康拓展開模板題 複雜度o n 2 的會tle 看資料就知道了 雖然某題解說可以,不知道是不是後期加強了資料 然而我還是寫了o n 2 的 include typedef long long ll ll f 1000010 const ll mod 998244353 int a 1000010 b ...