为了更加直观的看清楚我们选择一个大点的数组[6,8,4,7,5,3,2]这个数组,他的第一排序是[2,3,4,5,6,7,8]对吧,然后首先拿到待计算排序的第一个元素6,那么在6之前比他小的元素有几个呢? 是不是有2,3,4,5这4个,确定了第一个元素后,其他剩下的7-1=6个元素进行全排列,共有6!=720种,所以一共有4*(7-1)!种。但是计算第二个元素的时候要小心了。现在第2个元素是8,比8小的元素有几个呢,6个。错!!!,因为第一个元素已经确定了,所以应该是还有5个,那么此时剩下的元素进行全排列就有5*(7-2)!种 
下面是每一位上元素的所有排列情况 
6 –> 4x(7-1)!种 
8 –> 5x(7-2)!种 
4 –> 2x(7-3)!种 
7 –> 3x(7-4)!种 
5 –> 2x(7-5)!种 
3 –> 1x(7-6)!种 
2 –> 0x(7-7)!种 

最后再加上一个第1排序


代码:

Lintcode 197 排列序号

相关文章:

  • 2021-05-24
  • 2021-12-20
  • 2021-09-20
  • 2021-06-04
  • 2021-05-19
  • 2022-12-23
  • 2022-03-06
  • 2021-12-02
猜你喜欢
  • 2022-01-22
  • 2021-12-10
  • 2021-11-28
  • 2021-12-08
  • 2022-12-23
  • 2021-08-30
  • 2021-07-21
相关资源
相似解决方案