天天看點

一個字元串排列的小算法

給定n個A和2n個B,用這些字元拼成一個字元串,要求這個串的所有字首和字尾B的個數始終不少于A。

(一個字元串的字首是隻從開頭到某個位置為止的子串,字尾是隻從某個位置到結尾的子串)。

輸入格式

多組資料,每組資料隻有一行,包含一個正整數n。(n<=10^17)。

輸出格式

每組資料輸出一行,最終結果對99991取餘數的結果。

def count(n,m,ac,bc,sb):

    if(ac==n or

bc==m):

        print

sb;

        return

1;

if(ac==bc):

sb.append(‘b‘)

        tmp =

count(n,m,ac,bc+1,sb);

sb.pop()

tmp;

    else:

sb.append(‘a‘);

tmp0=count(n,m,ac+1,bc,sb);

sb.pop();

sb.append(‘b‘);

        tmp0 =

tmp0+count(n,m,ac,bc+1,sb)

        return tmp0;

n=2

m=2*n

print count(n,m,0,0,[]);

繼續閱讀