全排列(java版)
2024-09-14 09:14:17
适用于不同数字的全排列,其实也适用于有重复数字的全排列,只不过的出来的结果有重复,需手动删减掉重复的组合。
package testFullPermutation; import java.util.ArrayList;
import java.util.List; public class testFullPermutation
{
ArrayList<ArrayList<Integer>> fullPermutation=new ArrayList<ArrayList<Integer>>();
public ArrayList<ArrayList<Integer>> allSort(int[] buf)
{
int end=buf.length;
if (end==0)
{
return null;
}
else
{
fullPermutation=perm(buf,0,end-1);
return fullPermutation;
}
} public ArrayList<ArrayList<Integer>> perm(int[] buf,int start,int end)
{
if (start==end)//
{
ArrayList<Integer> oneKind=new ArrayList<Integer>();
for (int i=0;i<buf.length;i++)//递归终止条件
{
oneKind.add(buf[i]);
}
fullPermutation.add(oneKind); }
else
{
for (int i=start;i<=end;i++)
{
int temp=buf[start];
buf[start]=buf[i];
buf[i]=temp;
perm(buf,start+1,end);
//还原成交换之前的组合
temp=buf[start];
buf[start]=buf[i];
buf[i]=temp;
} }
return fullPermutation;
} }
最新文章
- nodejs复习02
- 有关attribute和property,以及各自对select中option的影响
- $(document).ready()方法和window.onload区别
- 宫格布局实例(注意jquery的版本号要统一)2
- C#分布式缓存一:Couchbase的安装与简单使用
- 【php学习】图片操作
- 【leetcode❤python】121. Best Time to Buy and Sell Stock
- 购买SSD固态硬盘须当心,你知道什么是SLC、 MLC、TLC闪存芯片颗粒吗?
- [JIT_APP]Java基础知识总结
- <;PHP>;字符串处理代码
- 基于ATmgea8单片机设计的加热控制系统(转)
- http范围请求
- CSS hover
- NHibernate之旅(21):探索对象状态
- Rest Client插件简单介绍
- axios ajax fetch 区别
- Jenkins + Ant + Jmeter 对项目的接口进行CI持续集成的配置 外加发送邮件 sendEmail
- 【xsy1156】 树套树(tree) 倍增
- 单页WEB应用(三),Chat聊天模块
- Yii2 yii\helpers\ArrayHelper