0,1,2,3,4,5,6,7,8,9的第100万个字典排列是什么?

来源:互联网 发布:淘宝网包头尖头皮拖鞋 编辑:程序博客网 时间:2024/05/01 11:44

排列是一个物体的有序安排。例如3124是1,2,3,4的一种排列。如果所有的排列按照数值或者字母序排序,我们称其为一个字典序。0,1,2的字典排列有:

012   021   102   120   201   210

0, 1, 2, 3, 4, 5, 6, 7, 8,9的第100万个字典排列是什么?

public class Test {public static void main(String[] args) {int MAX = 1000000 - 1;int[] tempn = new int[9];int[] num = new int[10];int[] answer = new int[10];int NUM = 1;int n;num[0] = 0;for (int i = 1; i < 10; i++) {NUM *= i;tempn[i - 1] = NUM;num[i] = i;}for (int i = 8; i >= 0; i--) {n = MAX / tempn[i];int k = 0;int m = 8 - i;while (n > 0) {n--;k++;while (num[k] == -1)k++;}answer[m] = num[k];num[k] = -1;MAX %= tempn[i];}for (int i = 0; i < 10; i++) {if (num[i] != -1) {answer[9] = num[i];break;}}for (int a : answer) {System.out.print(a);}}}

算法引自http://blog.sina.com.cn/s/blog_9f26be1d01012n0n.html  ,本人只是改用JAVA代码实现而已,学习了.

原创粉丝点击