JAVA语言之全排列的递归实现
2016-05-06 11:12
393 查看
问题:假如有一个数组的值为1,2,2,3,4,5一共六个值,进行全排列,但要求是3和5不能在一起,并且4不能在第三个位置
代码如下:
代码如下:
public class testtest { public static void main(String[] args) { int[] s = {1,2,2,3,4,5}; arrange(s,0,6); } public static void print(int x){ System.out.print(x+","); } public static void arrange(int[] s,int st,int len){ if(st==(len-1)){ int j; boolean aaa=true; for(j=0;j<len-1;j++){ if(s[j]==3 && s[j+1]==5){ aaa=false; } if(s[j]==5 && s[j+1]==3){ aaa=false; } if(s[j]==5 && j==2){ aaa=false; } } if(aaa){ for(j=0;j<len;j++){ print(s[j]); } System.out.println(); } }else{ for(int i=st;i<len;i++){ swap(s, st, i);//将谁作为头部不动需要看st的值,然后依次在arrange()里面递归 arrange(s, st+1, len); swap(s, st, i);//将位置换回来 } } } public static void swap(int[] s,int a,int b){ if(a!=b){ s[a]^=s[b]; s[b]^=s[a]; s[a]^=s[b]; } } }
相关文章推荐
- Java WebService 简单实例
- windows下安装Java 和 scala
- Java 对数据库连接 的封装
- 如何解决Fail to create the java Virtual Machine
- Spring的常见问题及答案
- Spring整合DWR comet 实现无刷新 多人聊天室
- JAVA NIO non-blocking模式实现高并发服务器
- spring-core组件详解――PropertyResolver属性解决器
- Spring mvc 日期转换 支持多种格式
- Java中unicode增补字符(辅助平面)相关用法简介
- 转: javaWeb学习总结(见过最好的知识合集,相当给力,强烈推荐)
- eclipse安装jetty插件
- java锁机制简介以及CAS操作
- Java关键字 ClassName.this(类名.this)的理解
- 怪异的JAVA对象属性存储
- Netbeans使用技巧,从点滴提高编程效率
- Action中获取web对象的方式
- java DataGram套接字 utp
- Eclipse远程debug
- spring多数据源配置方式