蓝桥杯2017模拟题-排列序列
2017-03-23 00:51
190 查看
#include<iostream> #define MAX 17 using namespace std; int arr[MAX]; string str; long long k=0; void fun(){ arr[0]=1;//统计出17个字符全排列种类的个数 for(int i=1;i<MAX;i++) arr[i]=arr[i-1]*i; // 从第一个字符往后比,如果比后面的大,就相当于换了位置 // 因为初始的是:abcdef....是依次变大的 for(int i=0;i<MAX;i++){ int res=0; for(int j=i;j<MAX;j++){ if(str[i]>str[j]){ res++; k+=res*arr[MAX-i-1]; } } } } int main(){ cin>>str; fun(); cout<<k<<endl; return 0; }
这道题如果强行用深搜的话,全排列太大,程序所需时间太久!!!
相关文章推荐
- 蓝桥杯2017模拟赛-排列序列
- 求n位全排列字典排序后,给定序列的下一序列
- 2017蓝桥杯模拟题 排列序数(康托展开)
- 有两个序列A和B,A=(a1,a2,...,ak),B=(b1,b2,...,bk),A和B都按升序排列。对于1<=i,j<=k,求k个最小的(ai+bj)。要求算法尽量高效。
- 蓝桥杯2017模拟题-猜算式
- 2017蓝桥杯模拟题 排列序数(康托展开)
- 使用递归的方法生成一个序列的所有排列
- 有两个序列A和B,A=(a1,a2,...,ak),B=(b1,b2,...,bk),A和B都按升序排列,对于1<=i,j<=k,求k个最小的(ai+bj),要求算法尽量高效
- leetcode_60. Permutation Sequence 找n的全排列中的第k个序列
- 【NOIP模拟题】【数学归纳法】【GCD】2016.11.16 第一题 LGTB 与序列 题解
- 【codeforces 691 E】【矩阵快速幂 思维题】【给定序列,从序列中选择k个数(可以重复选择),使得得到的排列满足xi与xi+1异或的二进制表示中1的个数是3的倍数。问满足条件的序列个数】
- UVA 11925 Generating Permutations 生成排列 (序列)
- 有两个序列A和B,A=(a1,a2,...,ak),B=(b1,b2,...,bk),A和B都按升序排列。对于1<=i,j<=k,求k个最小的(ai+bj)。要求算法尽量高效。
- 求一个序列的所有排列
- 正解应该heap---wjj的排列序列
- 递归与非递归算法求序列所有排列组合
- 蓝桥杯2017模拟题-滑动解锁
- 2017蓝桥杯模拟题 排列序数(康托展开)
- Next Permutation下一个全排列序列
- 排列组合算法1:生成全部有序列