字符串的題很頭疼spa
不 會 擅長打表繼承
考試想了將近2個小時字符串
想到了重複的長什麼樣子io
然而不會正確的加回來co
甚至加多了發現有各類重複字符
感受藥丸,,,換題ab
證實:
想了兩個小時
用總的-合法的
合法的有重複 噁心
設插入的串爲x
那麼全部插入後的串長這個樣子:
abcXsgd
abcsgXd
考慮重複的狀況,能夠掐頭去尾,變成Xsg和sgX相似的狀況
就是$a+b==b+a$
不妨設a+b==b+a成立此時重複 倒着推出重複的前提條件
[...........][...] [..][...........]
[...][...........] OR [...........][..]
其中的X串是插入的能夠任意設字母變化,剩下的是題目中給的串的一部分 是固定的
因爲設了$a+b==b+a$成立,因此至少有一種方案使得爲X安排字母使得$a+b==b+a$
那麼在原串的插入狀況中不只有Xsg , sgX 這種狀況 還會有 刪掉一個(把下面的X往前插一個的狀況)(Xs,sX)
因爲原先有方案合法那麼刪掉一個的狀況下必定能夠合法(由於X能夠自由安排)
:[...........][...]
[...][...........] 因爲合法 那麼中間部分相同 左右兩側X的部分是繼承固定串的,刪掉一個後依然有繼承能力
那麼a+b==b+a重複的話說明a+一個長度爲1的串(字母)==字母+b
[...........][...] [...........][.]
[...][...........] - > [.][...........]
因此a+b==b+a的前提是a+字母==字母+b
那麼要知足X的首字母等於這個字母
即:X的首字母==X插入後X的後一個字母
這就是發生重複串的前提條件。
如何避免
1.先都加上 最後減去
2.考慮加的時候少加一個(提早預知後方有串能夠和準備加的重複時不加了)
第一種容易發現難以求出(也許根本不能)
第二種狀況下因爲每一次提早預知不加 $a=b=c$ 預知$a=b$, $a$不加 $b=c$ $b$不加 能夠解決連等多重複問題,很優秀
那麼由得出的前提條件能夠提早預知
X的首字母是能夠隨便安排的,因此只要後邊有字母 X的首字母就不能填那一個(預知,不加)。
其他位置隨便填 因此X的內部方案$25*26^{n-|s|-1}$ 能夠插在$|s|$個位置(不是$|s|+1$由於插在最後後邊沒有字母)
因此合法方案數爲$25*26^{n-|s|-1}*|s|+26^{n-|s|}$;
用總的減去
答案:$26^{n}- |s|*25*26^{n-|s|-1} - 26^{n-|s|}$;