排列的学习(java)
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)的更多相关文章
- 程序员带你学习安卓开发,十天快速入-对比C#学习java语法
关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...
- 如何才能够系统地学习Java并发技术?
微信公众号[Java技术江湖]一位阿里Java工程师的技术小站 Java并发编程一直是Java程序员必须懂但又是很难懂的技术内容. 这里不仅仅是指使用简单的多线程编程,或者使用juc的某个类.当然这些 ...
- 零基础如何学习java更有效呢?
零基础学java,不知道该如何入手?也不知道学习的方向,很多人会问零基础怎么样学习,有没有什么入门的书籍推荐:只要方法正确,零基础学好java也是有机会的哦. 一.理解Java思想 Java是一门面向 ...
- 积极主动敲代码,使用Junit学习Java程序设计
积极主动敲代码,使用JUnit学习Java 早起看到周筠老师在知乎的回答软件专业成绩很好但是实际能力很差怎么办?,很有感触. 从读大学算起,我敲过不下100本程序设计图书的代码,我的学习经验带来我的程 ...
- 如何接触学习java
信息科技必将是未来的潮流,Java语言必将在时代的进步中发挥不可估量的作用,未来,掌握好一门实用而且有良好应用前景的技术是你们的首要任务. 零基础怎么学Java 多年Java教育培训经验事实表明,零基 ...
- 零基础如何系统学习Java Web
零基础如何系统学习Java Web? 我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个 ...
- (转)如何学习Java技术?谈Java学习之路
51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...
- 《疯狂Java讲义》(一) ---- 关于学习Java的反思
"听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...
- 十天来学习java的心得体会
有关学习java是几天来的心得体会: 十天学习java遇到很多问题,每个问题都是经过反复的看书本以及上网查找资料来解决的,发现这一点真的需要自己来而不是去遇到什么问题就去依靠他人(师兄.同学).在其中 ...
- 【转】学习JAVA的步骤
好东西大家分享: JAVA学习的一些重点 . Java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的 ...
随机推荐
- 线程池原理及创建并C++实现
本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关.另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量.文章的最后,我们 ...
- php中的修饰符
上面使用了一个修饰符U,详见关于修饰符的介绍. PHP正则表达式修饰符的理解: 在PHP正则表达式里面的修饰符可以改变正则的很多特性,使得正则表达式更加适合你的需要(注意:修饰符对于大小写是敏感的,这 ...
- 大坑!常被忽视又不得不注意的小细节——%I64,%lld与cout(转载)
原地址:http://blog.csdn.net/thunders01/article/details/38879553 刚刚被坑完,OI一年了才知道%I64和%lld有区别(做题会不会太少),lon ...
- 微软Hololens学院教程-Hologram 212-Voice(语音)【微软教程已经更新,本文是老版本】
这是老版本的教程,为了不耽误大家的时间,请直接看原文,本文仅供参考哦!原文链接:https://developer.microsoft.com/EN-US/WINDOWS/HOLOGRAPHIC/ho ...
- python 中参数*args, **kwargs
def func(*args, **kwargs): print 'args : ', args print 'kwargs :', kwargs def test(): func(1,2,'x',' ...
- chmod,chown和chgrp的区别
1.chgrp(转变文件所属用户组)change group chgrp 用户组 文件名 ###便是这个格了.若是整个目次下的都改,则加-R参数用于递归. 如:chgrp -R user smb.co ...
- 【NOIP 2015 DAY2 T3】 运输计划 (树链剖分-LCA)
题目背景 公元 2044 年,人类进入了宇宙纪元. 题目描述 L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之间,这 n-1 条航道连通了 L 国的所有星球. 小 P 掌管一家 ...
- HDOJ多校联合第六场
先一道一道题慢慢补上, 1009.题意,一棵N(N<=50000)个节点的树,每个节点上有一个字母值,给定一个串S0(|S0| <=30),q个询问,(q<=50000),每次询问经 ...
- DHTMLX 前端框架 建立你的一个应用程序 教程(七)-- 添加筛选功能
表格的过滤筛选 我们在每列第一行添加一个文本,用做数据的条件筛选. 我们还提供服务端的筛选 ,当有大量数据时 , 我们可以使用dhtmlxConnector 进行后台数据的筛选. 添加过滤器到表格列中 ...
- 请问什么是UTF字符串?
utf是编码方式,一般而言是国际性质的编码格式,有utf-8,utf-9,utf-16等多种形式,是最高级别的编码方式,也就是说如果你要读取的数据流设置成utf编码的话就要用到相应的编码方式来读取了, ...