网站大量收购独家精品文档,联系QQ:2885784924

广工顾国生软件算法作业.docVIP

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

评定等级 算法作业 学生学院____ ____________ 专业班级___ _____ 学 号____ ________ 学生姓名____ ____________ 指导教师____顾国生____________ 2011 年 11 月 1、Johnson-Trotter算法 1.1关于Johnson-Trotter的介绍 Johnson-Trotter算法又称为字典序法,对给定的字符集中的字符规定了一个先后关系,在此基础上规定两个全排列的先后是从左到右逐个比较对应的字符的先后。例如对于5个数字的排列 12354和12345,排列12345在前,排列12354在后。按照这样的规定,5个数字的所有的排列中最前面的是12345,最后面的是 54321。 [注意] 一个全排列可看做一个字符串,字符串可有前缀、后缀…..n】的所有排列的列表。 1.3实验分析 字典序如下:   设P是1~n的一个全排列:p=p1p2......pn=p1p2......pj-1pjpj+1......pk-1pkpk+1......pn   1)从排列的右端开始,找出第一个比右边数字小的数字的序号j(j从左端开始计算),即 j=max{i|pipi+1}   2)在pj的右边的数字中,找出所有比pj大的数中最小的数字pk,即 k=max{i|pipj}(右边的数从右至左是递增的,因此k是所有大于pj的数字中序号最大者)   3)对换pi,pk   4)再将pj+1......pk-1pkpk+1......pn倒转得到排列p=p1p2.....pj-1pjpn.....pk+1pkpk-1.....pj+1,这就是排列p的下一个排列。package JohnsonTrotter; import java.io.*; import java.util.*; class JohnsonTrotter2{ public static void main(String args[])throws IOException { System.out.println(输入n:); BufferedReader in = new BufferedReader(new InputStreamReader(System.in));//设置输入缓冲流来加快运算速度 String s; int n=0; while((s = (in.readLine()).trim())== null ||s.length()==0) { System.out.println(请输入非空的字符串); if(s.length()=1) break; } try { n=Integer.parseInt(s); } catch(Exception e){ System.out.println(e.toString()); s=null; } int []li=new int[n+1]; int []ji=new int[n+1]; li[0]=n; for(int i=1;i=n;i++) { System.out.println(第+i+个数为:); in = new BufferedReader(new InputStreamReader(System.in)); int m=0; while((s = (in.readLine()).trim())== null ||s.length()==0) { System.out.println(请输入非空的字符串); if(s.length()=1) break; } try { m=Integer.parseInt(s); } catch(Exception e){ System.out.println(e.toString()); s=null; } li[i]=m; } int sum=1; for(int j=1;j=n;j++) ji[j]=li[n-j+1]; //开始全排列 int index=-1; int min=-1; int flag=-1; int minShu=-1; int count=0; JohnsonTrotter2 hh=new JohnsonTrotter2(); for(int f

文档评论(0)

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

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

1亿VIP精品文档

相关文档