排列的字典序问题(java版)
import java.io.*;
import java.util.Scanner;
//字典序
/*
* 思路:
①如何得到2 6 4 5 8 1 7 3的下一个排列?
* 1 从尾部往前找第一个P(i-1) < P(i)的位置
* 2 6 4 4 5 8 1 <-- 7 <-- 3
* 最终找到1是第一个变小的数字,记录下1的位置i-1
* 2 从尾部往前找到第一个大于1的数
* 2 6 4 4 5 8 1 7 3 <--
* 最终找到3的位置,记录位置为m
* 3 交换位置i-1和m的值
* 2 6 4 4 5 8 3 7 1
* 4 倒序i位置后的所有数据
* 2 6 4 4 5 8 3 1 7
②如何得到2 6 4 5 8 1 7 3所对应的字典序值
* 比2小的数有1个,则 value+=1*7!;
* 比6小的数有4个,则 value+=4*6!;
* 比4小的数有2个,则 value+=2*5!;
* 比5小的数有2个,则 value+=2*4!;
* 比8小的数有3个,则 value+=3*3!;
* 比1小的数有0个,则 value+=0*2!;
* 比7小