`
to_zoe_yang
  • 浏览: 142409 次
  • 性别: Icon_minigender_2
  • 来自: 01
社区版块
存档分类
最新评论

Problem 24

 
阅读更多

问题描述:

A permutation is an ordered arrangement of objects. For example, 3124 is one possible permutation of the digits 1, 2, 3 and 4. If all of the permutations are listed numerically or alphabetically, we call it lexicographic order. The lexicographic permutations of 0, 1 and 2 are:

012   021   102   120   201   210

What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9?

 

解决方法:

 

以012的组合为例子,所有的交换都基于012最小的数字。

   2! 1!

0:0  1  2

1:0  2  1    1= 1!  

2:1  0  2    2 = 2! 

3:1  2  0     3=2!+1!

4:2  0  1     4=2*2!  

5:2  1  0     5 = 2*2! + 1!  先将0和2交换,此时数字为210,然后将1和0交换,此时数字为201,完成了2*2!种变换,然后将1和0交换,完成了1!种变化,则此时的数字210就是我们经过2*2!+1!变换的数字。

 

 

An  An-1  ....A1

当An确定时,其余n-1位有(n-1)!种排列,那么第n位确定后,就有An*(n-1)!种排列。

而第n-1則有An-1 * (n-2)!

當前n-1位確定,那麼最後一定也就是肯定的!

 

 10000000 = 2*9!+6*8!+6*7!+2*6!+5*5!+1*4!+2*3!+1*2!+1!

开始是0123456789

第一步将2和0交换。得到2103456789,然后交换1和0,得到2013456789。最高位确定为2.

第二步将7和0交换。得到2713456089,然后交换0之前,7之后的数字,得到2701345689。

。。。

其实每次第一次交换后,就是将剩下的数字再次由小到大排序。

为什么呢?

以0123为例子,

第23个是3201,既是 22 =  3×3! + 2×2!

先将3和0交换,得到3120,此时并不是滴3*3!个,得到第3*3!需要将其余的几位排序。

这里大家好好想想。

 

 

	public static final Long UP = 9876543210L;
	public static final int START = 123;
	public static final int Last = 1000000;
	public static final int HIGH = 9;
	public static int[] Number = new int[9];
	public static final int[] Element = {0,1,2,3,4,5,6,7,8,9};
	
	public static long Factorial(int number){
		long r = 1;
		
		for(int i=number; i>1; i--){
			r *= i;
		}
		
		return r;
	}
	
	public static void ai_find(){
		
		Arrays.fill(Number, 0);
		int remain = Last-1;
		int high = HIGH;
		int posititon = 0;
		while(remain!=0){
			long value = Factorial(high);
			long num = 0;
			if(remain>=value){
				num = remain/value;
				remain -= value*num;
				Number[posititon] = (int)num;
			}else{
				Number[posititon] = 0;
			}
			System.out.println("Position:"+posititon+",value:"+value+",num:"+num+",remain:"+remain);
			posititon++;
			high--;
			
		}
		
		for(int i=0; i<Number.length; i++){
			System.out.print(Number[i]+",");
		}
		
		boolean[] matcher = new boolean[10];
		Arrays.fill(matcher, false);
		
		String str = "";
		for(int i=0;i<Number.length; i++){
			int index = 0;
			for(int j=0; j<matcher.length; j++){
				if(index==Number[i]&&!matcher[j]){
					str = str + j;
					matcher[j] = true;
					break;
				}
				if(!matcher[j]){
					index++;
				}
			}
		}
		for(int i=0; i<matcher.length; i++){
			if(!matcher[i]){
				str = str + i;
			}
		}
		System.out.println(str);
	}

 

分享到:
评论

相关推荐

    project euler problem 5

    题目:Project Euler问题5——寻找最小公倍数 在Project Euler的问题集中,问题5要求我们找到能被1至20所有数字整除的最小正整数。这个问题实际上是在寻找这组数字的最小公倍数(LCM)。对于较小的参数值,如本例中...

    计算机网络第六版答案

    Computer Networking: A Top-Down Approach, 6th Edition Solutions to Review Questions and Problems Version Date: May 2012 ...This document contains the solutions to review questions ...Problem 1 There...

    MySQL数据库考试试题.docx

    24. 错误语句:不能使用运算符号(Problem 24) 在 SELECT 语句中,不能使用运算符号,例如 SELECT sal+1 FROM emp;。 25. 连接种类:左外连接、内连接、交叉连接等(Problem 25) SQL 语言中有多种连接种类,...

    模式识别 中科院刘成林 作业一

    Question 5 (Pattern Classification, Chapter 2, Problem 24) Consider the multivariate normal density for which σij = 0 and σii = σ2 i , i.e., Σ = diag(σ2 1,σ2 2,...,σ2 d). (a) Show that the ...

    Algorithmic Problem Solving

    出版日期: 2011-10-24 pages 页数: 432 An entertaining and captivating way to learn the fundamentals of using algorithms to solve problems The algorithmic approach to solving problems in computer ...

    maxwell仿真实例版.pdf

    10. 瞬态场实例:TEAM WORKSHOP PROBLEM 24 该实例指导用户如何使用Maxwell 3D来计算瞬态场分布。用户需要创建一个瞬态场模型,并设置材料属性和边界条件。然后,用户可以使用Maxwell 3D来计算瞬态场分布。 本实例...

    0-1-knapsack-problem-master (24)c.zip

    在这个压缩包"0-1-knapsack-problem-master (24)c.zip"中,我们可以推测它包含了一个C语言实现的0-1背包问题解决方案。C语言是一种强大的、低级别的编程语言,适用于实现高效算法。文件名中的"(24)"可能是版本号或者...

    paper_ed40_24_inverse_control_problem_

    在当今的智能系统和自动化技术中,逆向控制(Inverse Control Problem)已经成为一个重要的研究领域。它主要解决如何从期望的效果出发,设计出能够实现这一效果的控制器。而在工业界,尤其是机器人和自动化设备中,...

    0-1-knapsack-problem-master (24).zip

    在这个0-1-knapsack-problem-master (24).zip压缩包中,我们很可能找到了一个关于0-1背包问题的C语言实现。C语言是一种底层、高效的语言,常用于编写系统软件和高性能的应用程序,包括算法实现。 0-1背包问题的基本...

    Karp’s minimum mean-weight cycle algorithm

    好不容易找到的最详细的对MMC算法的解释,可做为算法导论 Problem 24-5 的答案

    problem.pdf

    要求参赛者用给定的n个大小为n的数通过加、减、乘、除四种运算(每个数只能使用一次)来算出数字24。每个运算结果都必须是整数,且最终结果为24。如果无法得到结果,则输出“Impossible”。这个题目考查对算法逻辑和...

    2019-51MCM-Problem A (English).docx

    提供了24名运动员在同一场比赛中投掷同一标枪的数据,需要对这些数据进行统计分析,建立合适的数学模型来揭示标枪飞行过程中的运动规律。可能涉及到的数学模型包括抛体运动方程、空气阻力模型以及运动员技巧与飞行...

    动态规划Hamming_Problem 解题报告

    例如,给定质数2, 3, 和 5,Hamming序列H(2, 3, 5)是2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, ...。题目要求我们找到H(p1, p2, p3)序列中的第i个元素,其中i是一个给定的正整数。 输入数据包括三...

    第3届Mathorcup数学建模竞赛优秀论文-ProblemC(English)-ProblemC.doc

    ### 第3届Mathorcup数学建模竞赛优秀论文-ProblemC(English)-ProblemC.doc #### 关键知识点 ##### 一、Mathorcup数学建模挑战赛简介 Mathorcup数学建模挑战赛是一项旨在提高大学生数学应用能力、创新能力和实践...

    AIX 故障诊断,Problem Solving and Troubleshooting

    本文档基于IBM Redbooks发布的《Problem Solving and Troubleshooting in AIX Version 4.3》(SG24-5496-00),详细介绍了AIX 4.3版本中的问题诊断和故障排除方法,旨在帮助系统管理员更好地理解和处理AIX系统中的...

    基于扩展TOP(Team Orienteering Problem)的多无人机任务分配算法测试基准设计源码

    该项目是针对扩展TOP(Team Orienteering Problem)的多无人机任务分配算法的测试基准设计源码,包含24个文件,其中15个PNG图片文件、4个Python源文件、3个CSV数据文件、1个Git忽略文件和1个Markdown文档。...

    2D-Cutting-Stock-Problem-with-Setup-Cost:数学题

    // add image { w = 24 ; h = 30 ; demand = 246 }pk . addImageKind( 13 , 56 , 562 ); // add image { w = 13 ; h = 56 ; demand = 562 }pk . addImageKind( 14 , 22 , 1000 ); // add image { w = 14 ; h = 22 ;...

    delphi2010皮肤控件-VCLSkinv5.30FS

    News in 3.98 2/24/2006 * Support TPageControl with tsButton style. * Fix problem on Mainmenu with ActionList. News in 3.97 2/16/2006 * Fix problem when Groupbox in ScrollBox. *Fix problem with newest...

    DIRECTDRAW 读取24位位图出问题 请高手看看

    对于文件名称列表中的"problem",这可能是包含有问题代码或资源的文件,需要进一步分析。 通过以上步骤,应该能定位并解决程序在读取24位位图时遇到的问题。记住,解决问题的关键在于理解DirectDraw的工作原理和...

Global site tag (gtag.js) - Google Analytics