
正文
java代码实现排列组合 java 数组排列组合算法
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
求解释一段代码,关于Java中排列组合的问题
ArrayListCharacter
newblist=new
ArrayListCharacter(blist);
是用blist的值创建一个新的ArrayList
如果
newblist
=
blist;这样java代码实现排列组合,那两个ArrayList使用的是同一个引用java代码实现排列组合,操作一个会影响另一个。
------------------------------------------------------------------------------------------------------------------------
这个代码的递归思想是这样的。
alist是数据java代码实现排列组合,blist是结果
循环alist,创建出一个newalist备份,将alist中的一个元素添加到newblist.add(alist.get(i));中,
并在newalist中删除。
将这两个新的对象递归下去。
[1,2,3]
[]
[2,3]
[1]
[3]
[1,2]
--------------------
递归使用的是新创建的list
所以方法结束后,对alist,blist没有影响
[2,3]
[1]
[2]
[1,3]
相关问答
Q1: 输入任意字符序列,输出所有两位数的排列组合JAVA代码?
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 创建Scanner对象,用于获取用户输入
Scanner scanner = new Scanner(System.in);
System.out.print("请输入任意字符序列:");
// 获取用户输入的字符序列
String str = scanner.nextLine();
// 循环遍历字符序列中的每个字符
for (int i = 0; i str.length(); i++) {
// 获取字符序列中的第i个字符
char c1 = str.charAt(i);
// 循环遍历字符序列中的每个字符
for (int j = 0; j str.length(); j++) {
// 获取字符序列中的第j个字符
char c2 = str.charAt(j);
// 如果第i个字符不等于第j个字符,则输出它们的排列
if (i != j) {
System.out.println(c1 + "" + c2);
}
}
}
}
}
Q2: JAVA排列组合算法如题:用x、y,求出指定长度的所有排列组合。
按照你的要求编写的求x,y指定长度的所有排列组合的Java程序如下
import java.util.ArrayList;
import java.util.List;
public class EE {
public static void combination(ListString list, String sNumbers, String sPath, int ALen)
{
if (sPath.length()== ALen)
{
list.add(sPath);
return;
}
for(int i=0;isNumbers.length();i++)
{
combination(list,sNumbers,sPath +sNumbers.substring(i,i+1), ALen);
}
}
public static void main(String[] args) {
ListString output = new ArrayListString();
System.out.println("组合");
combination(output,"xy", "", 5);
for(String s: output)
System.out.print(s+" ");
System.out.println();
System.out.println("共"+output.size()+"个");
}
}
运行结果
组合
xxxxx xxxxy xxxyx xxxyy xxyxx xxyxy xxyyx xxyyy xyxxx xyxxy xyxyx xyxyy xyyxx xyyxy xyyyx xyyyy yxxxx yxxxy yxxyx yxxyy yxyxx yxyxy yxyyx yxyyy yyxxx yyxxy yyxyx yyxyy yyyxx yyyxy yyyyx yyyyy
共32个
Q3: java实现排列组合
char[] a={'1','2','3','4'};
String b= "";
String c= "";
for (int i = 0; i a.length-1; i++) {
b="["+a[i]+","+a[i+1]+"]";
c+=b;
}
System.out.println(c);
Q4: 用Java编写程序;求字母A和B的各种排列组合(递归思想)
//PS:不太明白函数中String s的意义,所以忽略了。
import java.util.ArrayList;
import java.util.List;
public class CompoundString {
private static void generate(int n,ListString results) {
if(n==1){
return;
}
ListString resultsTemp_A = new ArrayListString();
ListString resultsTemp_B = new ArrayListString();
for(String str : results){
String temp_A = str+"A";
resultsTemp_A.add(temp_A);
String temp_B = str+"B";
resultsTemp_B.add(temp_B);
}
//此处results引用不能改变,否则任何修改对main函数中的results都无效
results.clear();
results.addAll(resultsTemp_A);
results.addAll(resultsTemp_B);
generate(n-1, results); // recursive
}
public static void main(String[] args) {
ListString results = new ArrayListString();
results.add("A");
results.add("B");
generate(8, results);
for(String str : results){
System.out.println(str);
}
}
}
Q5: java实现排列组合输出
完成了一种实现,发给你参考下。
不过感觉应该还有更好的办法,有时间我会继续研究下.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class TestQiuhe {
//集合a{1,2,3,5,7,10},输出不多于4个元素(不重复)的加和为22的组合。
public static void main(String[] args) {
int[] nums={1,2,3,5,7,10};
int l = nums.length;
Listint[] results=new ArrayListint[]();
for(int i1=0;i1l;i1++){
for(int i2=0;i2l;i2++){
if(nums[i1]==22){
results.add(new int[]{nums[i1]});
}
if(i2!=i1){
if(nums[i1]+nums[i2]==22){
results.add(new int[]{nums[i1],nums[i2]});
}
for(int i3=0;i3l;i3++){
if(i3!=i1 i3!=i2){
if(nums[i1]+nums[i2]+nums[i3]==22){
results.add(new int[]{nums[i1],nums[i2],nums[i3]});
}
for(int i4=0;i4l;i4++){
if(i4!=i1 i4!= i2 i4!=i3){
if(nums[i1]+nums[i2]+nums[i3]+nums[i4]==22){
results.add(new int[]{nums[i1],nums[i2],nums[i3],nums[i4]});
}
}
}
}
}
}
}
}
//去重
SetString reSet=new HashSet();
for(int[] r:results){
Arrays.sort(r);
reSet.add(Arrays.toString(r));
}
System.out.println("一共得到结果集:"+reSet.size());
System.out.println(reSet);
}
}
运行结果:
一共得到结果集:2
[[5, 7, 10], [2, 3, 7, 10]]
java代码实现排列组合的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 数组排列组合算法、java代码实现排列组合的信息别忘了在本站进行查找喔。





