1.无重复排列

2.有重复排列

3,下一个排列

package 生成排列;

public class Main {
static int count=0;
//a中保存原来的排列,lev表示选定第几个数,len是长度
public static void swap(int a[],int lev,int i)
{
int temp=a[lev];
a[lev]=a[i];
a[i]=temp; }
public static void swap(char a[],int lev,int i)
{
char temp=a[lev];
a[lev]=a[i];
a[i]=temp; } public static void reverse(char c[],int low,int high)
{
int l=low;
int h=high;
while(l<h)
{
swap(c,l,high);
l++;
h--; } }
//利用交换法,获得排列
public static void perm(int a[],int lev,int len)
{
if(lev==len)
{
for(int i=0;i<len;i++)
{
System.out.print(a[i]); } count++;
}
else
{
for(int i=lev;i<len;i++)
{
swap(a,lev,i);
perm(a,lev+1,len);
swap(a,lev,i); } } }
//带有重复数字的排列 public static void perm2(int a[],int lev)
{
if(lev==a.length)
{
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]); }
System.out.println();
count++;
}
else
{
boolean tf=true;
for(int j=lev;j<a.length;j++)
{
//对于重复的数据不再交换
for(int k=lev;k<j;k++)
{
if(a[k]==a[j])
{
tf=false;
break;
}
} if(tf)
{
swap(a,lev,j);
perm2(a, lev+1);
swap(a,lev,j);
} } } } //下一个排列 STl
public static boolean nextPerm(char c[]) //输入原始序列
{ //找到替换点
int i=c.length -2;
while(i>=0&&c[i]>=c[i+1])
{
i--;
}
if(i<0) //说明是最后一个数,翻转后
{
reverse(c,0,c.length-1);
return false; }
else
{
//否则的话,找到替换点
//从右边开始找到第一个大于c[i]的位置
int j=c.length-1;
while(c[j]<=c[i])
{
j--; }
//交换两个值
swap(c,i,j); reverse(c,i+1,c.length -1);
return true; } }
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[]={1,1,1,1,1};
perm2(a,0);
System.out.println(count);
char c[]="1234".toCharArray();
int count=1;
/* while(nextPerm(c))
{ System.out.println(c);
count++;
}
System.out.println(count);*/ } }

排列的学习(java)的更多相关文章

  1. 程序员带你学习安卓开发,十天快速入-对比C#学习java语法

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  2. 如何才能够系统地学习Java并发技术?

    微信公众号[Java技术江湖]一位阿里Java工程师的技术小站 Java并发编程一直是Java程序员必须懂但又是很难懂的技术内容. 这里不仅仅是指使用简单的多线程编程,或者使用juc的某个类.当然这些 ...

  3. 零基础如何学习java更有效呢?

    零基础学java,不知道该如何入手?也不知道学习的方向,很多人会问零基础怎么样学习,有没有什么入门的书籍推荐:只要方法正确,零基础学好java也是有机会的哦. 一.理解Java思想 Java是一门面向 ...

  4. 积极主动敲代码,使用Junit学习Java程序设计

    积极主动敲代码,使用JUnit学习Java 早起看到周筠老师在知乎的回答软件专业成绩很好但是实际能力很差怎么办?,很有感触. 从读大学算起,我敲过不下100本程序设计图书的代码,我的学习经验带来我的程 ...

  5. 如何接触学习java

    信息科技必将是未来的潮流,Java语言必将在时代的进步中发挥不可估量的作用,未来,掌握好一门实用而且有良好应用前景的技术是你们的首要任务. 零基础怎么学Java 多年Java教育培训经验事实表明,零基 ...

  6. 零基础如何系统学习Java Web

    零基础如何系统学习Java Web?   我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个 ...

  7. (转)如何学习Java技术?谈Java学习之路

    51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...

  8. 《疯狂Java讲义》(一) ---- 关于学习Java的反思

    "听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...

  9. 十天来学习java的心得体会

    有关学习java是几天来的心得体会: 十天学习java遇到很多问题,每个问题都是经过反复的看书本以及上网查找资料来解决的,发现这一点真的需要自己来而不是去遇到什么问题就去依靠他人(师兄.同学).在其中 ...

  10. 【转】学习JAVA的步骤

      好东西大家分享: JAVA学习的一些重点 . Java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的 ...

随机推荐

  1. H5 APP开发必读,20个你不知道的Html5新特征和窍门

    Jeffrey Way曾发表过一篇博文<28 HTML5 Features, Tips, and Techniques you Must Know >讲述了28个HTML5特征.窍门和技术 ...

  2. inline-block的兼容性问题

    inline-block的兼容性问题 Inline-block是元素display属性的一个值.这个名字的由来是因为,display设置这个值的元素,兼具行内元素( inline elements)跟 ...

  3. PHP中0、空、null和false的总结

    php中很多人还不懂php中 0 , '' , null 和 false 之间的区别,这些区别有时会影响到数据判断的正确性和安全性,给程序的测试运行造成很多麻烦.另外在面试题中也会遇到这些问题,如下: ...

  4. 上传头像,界面无跳转,php+js

    上传头像,界面无跳转的方式很多,我用的是加个iframe那种.下面直接上代码. html: //route 为后端接口//upload/avatar 为上传的头像的保存地址//imgurl=/uplo ...

  5. 与wait for a undo record相关的系统卡死

    今天下班之前同事过来找我寻求帮助,说是某客户的ORACEL数据库服务器从昨天起就开始很奇怪,一个语句执行很慢很慢,好像整个系统都卡住了.      问题1:请问最近应用系统有更新过程序吗?答:没有更新 ...

  6. HTML -- 标签记录(随着学习不断更新)

    此篇博文主要记录一些标签的常用属性 Font标签 size:字体大小 color:颜色 face:字体 <!DOCTYPE html> <html> <head> ...

  7. 异步IO模型和Overlapped结构

    .NET中的 Overlapped 类 异步IO模型和Overlapped结构(http://blog.itpub.net/25897606/viewspace-705867/) 数据结构 OVERL ...

  8. Delphi XE5 android 图解为Android应用制作签名

    本文摘自 http://redboy136.blog.163.com/blog/static/107188432201381872820132 要发布android应用,必须做签名的.看一下具体的操作 ...

  9. ASP.NET Application,Session,Cookie和ViewState等对象用法和区别 (转)

    在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...

  10. 编码问题 关于hibernate jdbc数据库连接在xml配置与在properties文件配置的差异

    在properties中,&字符不需要转义,因此在连接数据库的时候使用编码的地方直接使用&即可: driverClass=com.mysql.jdbc.Driver jdbcUrl=j ...