排列组合问题.java.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
排列组合问题.java

排列组合.java 给定一个String型一维数组,如String[]A={1,2,3,4,5}; Ⅰ求该数组的全排列; Ⅱ求从A中取3个元素的所有组合情况; Ⅲ求从A中取3个元素的所有排列情况; 我们知道,求任意数据类型的无重复元素一维数组排列组合问题,实则为求下标的排列组合问题 思路: Ⅰ求n个数的全排列,可由递推思想可先求前(n-1)个数的全排列,一直递推下去;如求1,2,3的全排列可先求1,2的全排列,再将3插入进去;而求1,2的全排列可先求1的全排列,再将2插入进去: ①1的全排列: _1_ ②1,2的全排列:(将2插入到1的全排列中) _1_2_ _2_1_ ③1,2,3的全排列:(将3插入到1,2的全排列中) 123 132 312 213 231 321 由此可求n个数的全排列; Ⅱ可采用回溯法求该类组合问题; Ⅲ可先组合再排列,即回到问题Ⅰ,Ⅱ; 代码如下: import java.util.Scanner; public class 排列组合{ public static void main(String[] args){ Scanner input=new Scanner(System.in); String[]A={1,2,3,4,5}; System.out.println(数组A的全排列如下:); long ms1=System.currentTimeMillis(); String[][]B=quanpl(A); for(int i=0;iB.length;i++){ System.out.print(第+(i+1)+组全排列为: ); for(int j=0;jA.length;j++){ System.out.print(B[i][j]+ ); } System.out.println(); } long ms2=System.currentTimeMillis(); System.out.println(耗时+(ms2-ms1)+毫秒); System.out.print(请输入你要取的元素个数:); int r1=input.nextInt(); System.out.println(从数组A中取+r1+个元素的组合情况如下:); long ms3=System.currentTimeMillis(); String[][]C=zuhe(A,r1); for(int i=0;iC.length;i++){ System.out.print(第+(i+1)+组组合为: ); for(int j=0;jr1;j++){ System.out.print(C[i][j]+ ); } System.out.println(); } long ms4=System.currentTimeMillis(); System.out.println(耗时+(ms4-ms3)+毫秒); System.out.print(请输入你要取的元素个数:); int r2=input.nextInt(); System.out.println(从数组A中取+r2+个元素的排列情况如下:); long ms5=System.currentTimeMillis(); String[][]D=plzuhe(A,r2); for(int i=0;iD.length;i++){ System.out.print(第+(i+1)+组排列为: ); for(int j=0;jr2;j++){ System.out.print(D[i][j]+ ); } System.out.println(); } long ms6=System.currentTimeMillis(); System.out.println(耗时+(ms6-ms5)+毫秒); } public static long fun(int n){//返回int型整数n的阶乘 long a=1; for(int i=1;in+1;i++){ a*=i; } return a; } public static long C(int n,int r){//返回组合数C(n,r) return fun(n)/(fun(r)*fun(n-r)); } public static int[][] pailie(int n)

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档