题目要求

P2524题目链接

分析

这题就用康托展开吧:
result = a[n] * [(n-1)!] + a[n-1] * [(n-2)!] + … + a[1] * [0!]

实现代码:

private static int cantor(int num, char[] chars) {int result = 1;for(int i = 0; i < num; i++) {int temp = 0;for(int j = i+1; j < num; j++) {if(chars[i] > chars[j]) {temp++;}}result += temp * factorial[num-i-1];}return result;
}

先把阶乘的数据打好就完事……

当然,C++的STL还有这么个函数:next_permutation(),可以生成下一序列,也可利用这个函数来做。

AC代码(Java语言描述)

import java.util.Scanner;public class Main {private static int[] factorial = {1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880};private static int cantor(int num, char[] chars) {int result = 1;for(int i = 0; i < num; i++) {int temp = 0;for(int j = i+1; j < num; j++) {if(chars[i] > chars[j]) {temp++;}}result += temp * factorial[num-i-1];}return result;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();char[] chars = scanner.next().toCharArray();scanner.close();System.out.println(cantor(num, chars));}}

计算当前序列的字典序序号(洛谷P2524题题解,Java语言描述)相关推荐

  1. 字符串的排序不一定要完全按照字典序(洛谷P1012题题解,Java语言描述)

    题目要求 P1012题目链接 分析 直接按照字符串处理,可以按照字典序排序. 但这样存在问题: 比如32和321,我们按照字典序进行排序"321">"32" ...

  2. 线性存储的最短平均检索时间(洛谷P1253题题解,Java语言描述)

    题目要求 P1253题目链接 分析 很像 ~洛谷P1223题题解~,也是一种类似SJF的贪心法. 排个序,由于两个不大于10000的数,乘起来还是int,就使用int属性吧. 数据量小,所以Scann ...

  3. 队列模拟约瑟夫问题(洛谷P1996题题解,Java语言描述)

    题目要求 P1996题目链接 分析 以前就研究过"约瑟夫环"问题: <单循环链表求解约瑟夫环问题(Java语言描述)> <杀人游戏~约瑟夫环(洛谷P1145题题解 ...

  4. 用任意合法序列建立一棵二叉树(洛谷P1305题题解,Java语言描述)

    前言 这题是极其麻烦极其麻烦的一道题(前提是你不知道它有套路)-- 我们不讲那些歪门邪道,我们正儿八经的解一下,想正经求解,很麻烦很麻烦... 题目要求 P1305题题解 分析 这题你看着容易,那是你 ...

  5. 麦森数(洛谷P1045题题解,Java语言描述)

    题目要求 题目链接 分析 这题挺经典的,快速幂取模算法,如果求出大数再取模就可能T掉. 之前有篇文章写了这个算法:<快速幂算法详解&&快速幂取模算法详解> 既然是Java, ...

  6. 枚举求解单词方阵(洛谷P1101题题解,Java语言描述)

    题目要求 P1101题目链接 分析 可以用DFS做,但我立下了个Flag,所以就用了朴素的枚举来做.... 结果,我的天哪,做了好几个小时-- 其实这种地图题,真的适合 DFS or BFS or D ...

  7. 快速幂||取余运算【模板】(洛谷P1226题题解,Java语言描述)

    题目要求 P1226题目链接 分析 标准的快速幂取模算法板子,之前这个算法我在这篇文章中讲过了:<快速幂算法详解&&快速幂取模算法详解>. 这里选择使用比较简单的API实现 ...

  8. 求子集元素之和(洛谷P2415题题解,Java语言描述)

    题目要求 P2415题目链接 分析 这题我觉得--当个数学题做就好了嘛. 有一个数N的情况:result = 1 * N 有两个数N1.N2的情况:result = 2 * (N1+N2) 有三个数N ...

  9. 用0和5凑被90整除的max数(洛谷P2192题题解,Java语言描述)

    题目要求 P2192题目链接 分析 盘一盘各种情况吧: 要被90整除,就必须被10整除,所以必须有0,没0就是-1啊. 要被90整除,一堆5,靠0是没用的,只能是9个5凑一堆儿才有用,有0但凑不够9个 ...

最新文章

  1. [译] MDC-101 Flutter:Material Components(MDC)基础(Flutter)
  2. CTFshow 命令执行 web63
  3. HDU4367(线段相交与斐波那契数列)
  4. BGP小实验(二)——还是他,继续第二波走起来
  5. JS加密算法简单分析
  6. Java 高级—— IO 基础
  7. 超干货 | 2019秋招CV算法面经
  8. excel2010设置列宽为像素_职场新手都能学会的Excel技巧:快速调整行高、列宽
  9. nlogn最长单调递增
  10. Atitit Hadoop的MapReduce的执行过程、数据流的一点理解。 目录 1. Why 为什么使用hadoop 1 2. Hadoop的MapReduce的执行过程 1 2.1. Had
  11. Kettle_设置全局变量
  12. 光线微弯传感器matlab仿真,光纤压力与位移传感特性
  13. python — Auto_QQ连连看
  14. mbp网速很慢_macbook上网速度慢(mac网速慢解决方案)
  15. cmyk列印颜色_列印
  16. Oracle数据库恢复时要建库吗_【DB】数据库面试笔试题库及详解(小麦苗DBA宝典出品)数据库运维宝典...
  17. java毕业设计招聘管理系统Mybatis+系统+数据库+调试部署
  18. Python中while循环练习——打印星星总结
  19. 【国信长天蓝桥杯】扩展板⑦ 光敏电阻的使用
  20. Oracle中V$SESSION等各表的字段解释,Oracle官方解释

热门文章

  1. 【转】LDA数学八卦
  2. hdu 3836 Equivalent Sets
  3. Servlet的学习之Request请求对象(2)
  4. 通过gdb调试分析Linux内核的启动过程
  5. 程序一旦发觉写得不理想,那就得重构它
  6. mysql安装及一些注意点
  7. DR.com客户端解密过程逆向分析
  8. linux进程管理之mm_struct,【转】Linux进程管理之SMP负载平衡(续二)
  9. gitee存放代码_git / gitee 提交本地仓库代码到Git或Gitee流程 及 常见报错
  10. 龙武2服务器在维护,龙武5.25更新维护时间_龙武5.5更新维护详情_牛游戏网