测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A40884. 排列序数

填空题 困难

题目描述

排列序数

题目描述

如果用 a b c d 这 4 个字母组成一个串,有 4! = 24 种,如果把它们排个序,每个串都对应一个序号:

abcd 0

abdc 1

acbd 2

acdb 3

adbc 4

adcb 5

bacd 6

badc 7

bcad 8

bcda 9

bdac 10

bdca 11

cabd 12

cadb 13

cbad 14

cbda 15

cdab 16

cdba 17

…

现在有不多于10个两两不同的小写字母,给出它们组成的串,你能求出该串在所有排列中的序号吗?

输入格式

一行,一个串。

输出格式

一行,一个整数,表示该串在其字母所有排列生成的串中的序号。注意:最小的序号是 0。

样例输入1

bdca

样例输出1

11

样例输入2

cedab

样例输出2

70

参考答案

#include <iostream> #include <algorithm> #include <cstring> using namespace std; int k; int main() { string s; cin >> s; string t = s; sort(t.begin(), t.end()); do { if(t == s) { cout << k << endl; return 0; } k ++; }while(next_permutation(t.begin(), t.end())); }
上一题 下一题