字典序位置

2021-08-02 13:17:19 字數 868 閱讀 3822

現在有」abcdefghijkl」12個字元,將其所有的排列中按字典序排列,給出任意一種排列,說出這個排列在所有的排列中是第幾小的?

對於乙個單詞a1

a2a3

…an,

對於a1

,在字典[a

1:an

] 中以a1

開頭的第乙個單詞的位置是 cn

t(a1

)∗(n

−1)!

。其中c

nt(a

1)表示在a2

到an 中小於a1

的個數。 (單詞位置從0開始)那麼

對於ai

, 在字典[a

i:an

]中以a

i 開頭的第乙個單詞的位置是 cn

t(ai

)∗(n

−i)!

。其中cn

t(ai

)表示在

ai+1

到an 中小於小於ai

的個數。

那麼單詞a1

a2a3

…an 在字典中的位置是 an

s=∑i

=1nc

nt(a

i)∗(

n−i)

!

#include 

#include

using

namespace

std;

#define n 12

int fac(int k)

int main()

pos += cnt * fac(n-i-1);

}cout

<< pos << endl;

return

0;}

排序 位置變換

include include using namespace std string str 200 int main 類似比較數字大小進行字串大小比較並交換順序 for i 0 i m i 交換位置 str min str i str i str for i 0 i m i cout endl r...

C語言程式 位操作

1.unsigned int reverse bit unsigned int value 這個函式的返回值value的二進位制位模式從左到右翻轉後的值。如 在32位機器上25這個值包含下列各位 00000000000000000000000000011001 翻轉後 2550136832 1001...

桶排序 位運算交換值

給定乙個未排序的整數陣列,找出其中沒有出現的最小的正整數。示例 1 輸入 1,2,0 輸出 3 示例 2 輸入 3,4,1,1 輸出 2 示例 3 輸入 7,8,9,11,12 輸出 1 說明 你的演算法的時間複雜度應為o n 並且只能使用常數級別的空間。分析 桶排序方法 比如有num 421315...