現在有」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...