
正文
组合的示例代码java 组合数java
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
用Java代码编码: 有1~8个号码,需要选择6个出来,组成不同的组合,不处理顺序,只关注重复,详情如下,
如果不管排序的话递归 循环都能实现这个 给你一个分别用递归和循环实现的例子
import java.util.Arrays;
public class TestArray {
public static void main(String[] args) {
int[] a = { 1, 2, 3, 4, 5, 6, 7, 8};
System.out.println("***********循环*************");
ergodicArray(a, 6);
System.out.println("***********递归*************");
recursionArray(a,new int[6],0,0);
}
//递归
public static void recursionArray(int[] a,int[] b,int start,int index){
if(b.lengtha.length)
throw new RuntimeException("长度错误");
else{
if(indexb.length){
int[] c=b.clone();
for(int i=start;ia.length;i++){
//System.out.println("i:"+i+" index:"+index);
c[index]=a[i];
recursionArray(a,c,i+1,index+1);
}
}else
System.out.println(Arrays.toString(b));
}
}
//循环
public static void ergodicArray(int[] a,int length){
if(lengtha.length)
throw new RuntimeException("长度错误");
else{
int[] b=new int[length];
for(int i=0;ilength;i++)
b[i]=i;
ergodicArray(a,b);
}
}
public static void ergodicArray(int[] a, int[] b) {
while (b[0] = (a.length - b.length)) {
if (b[b.length - 1] a.length) {
for (int i = 0; i b.length; i++) {
System.out.print(a[b[i]]);
if(ib.length-1)
System.out.print(',');
}
System.out.println();
++b[b.length - 1];
} else {
int j = b.length - 1;
while (j = 0) {
if (b[j] != a.length - (b.length - j) + 1) {
// j--;
break;
} else
j--;
}
if ((b[0] == (a.length - b.length - 1) || b[j] = (a.length - b.length + j))) {
int t = 0;
for (int i = j; i b.length; i++) {
if (i == j) {
b[i]++;
} else {
b[i] = b[i - 1] + 1;
}
}
}
}
}
}
相关问答
Q1: 将两个数组 排列组合到一个数组集合 求java 代码
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test {
private String[] arr1;
private String[] arr2;
public Test(){
//数组长度可以随意改,但必须保证两个数组长度一样
arr1 = new String[3];
arr2 = new String[3];
initArray();
}
private void initArray(){
Scanner scanner = new Scanner(System.in);
for(int i=0;iarr1.length;i++){
arr1[i] = scanner.next();
}
for(int i=0;iarr2.length;i++){
arr2[i] = scanner.next();
}
}
/**
* 获取组合后的数组表单
* @return
*/
private ListString[] getcombineList(){
ListString[] list = new ArrayListString[]();
combineArray(list, arr1, arr2);
combineArray(list, arr2, arr1);
return list;
}
/**
* 遍历数组str1,并将其复制到新的数组,再将str2中索引值与str1中索引值
* 相同的元素放入新的数组,然后将新的数组放入list中
* @param list
* @param str1
* @param str2
*/
private void combineArray(ListString[] list,String[] str1, String[] str2){
for(int i=0; istr1.length; i++){
String[] str = new String[str1.length];
for(int j=0; jstr2.length; j++){
str[j] = str2[j];
if(i == j)
str[j] = str1[j];
}
System.out.println(getArrayMessage(str));
list.add(str);
}
}
/**
* 将数组每一个元素组合成字符串
* @param str 字符串数组
* @return 组合字符串
*/
private String getArrayMessage(String[] str){
StringBuffer buffer = new StringBuffer();
for(int i=0; istr.length; i++){
if(i == str.length-1)
buffer.append(str[i]);
else
buffer.append(str[i]).append(",");
}
return buffer.toString();
}
public static void main(String[] argv){
Test test = new Test();
test.getcombineList();
}
}
Q2: 输入任意字符序列,输出所有两位数的排列组合JAVA代码?
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 创建Scanner对象组合的示例代码java,用于获取用户输入
Scanner scanner = new Scanner(System.in);
System.out.print("请输入任意字符序列:");
// 获取用户输入组合的示例代码java的字符序列
String str = scanner.nextLine();
// 循环遍历字符序列中组合的示例代码java的每个字符
for (int i = 0; i str.length(); i++) {
// 获取字符序列中组合的示例代码java的第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);
}
}
}
}
}
Q3: java怎么理解组合/聚合关系给个例子最好能将细点
聚合(Aggregation) 关系是关联关系组合的示例代码java的一种,是强的关联关系。聚合是整体和个体之间的关系。例如,汽车类与引擎类、轮胎类,以及其它的零件类之间的关系便整体和个体的关系。与关联关系一样,聚合关系也是通过实例变量实现的。但是关联关系所涉及的两个类是处在同一层次上的,而在聚合关系中,两个类是处在不平等层次上的,一个代表整体,另一个代表部分。
组合(Composition) 关系是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分对象的生命周期,组合关系是不能共享的。代表整体的对象需要负责保持部分对象和存活,在一些情况下将负责代表部分的对象湮灭掉。代表整体的对象可以将代表部分的对象传递给另一个对象,由后者负责此对象的生命周期。换言之,代表部分的对象在每一个时刻只能与一个对象发生组合关系,由后者排组合的示例代码java他地负责生命周期。部分和整体的生命周期一样。
class Driver {
//使用成员变量形式实现关联
Car mycar;
public void drive(){
mycar.run();
}
...
//使用方法参数形式实现关联
public void drive(Car car){
car.run();
}
}
聚合关系是是一种比较强的关联关系,java中一般使用成员变量形式实现。对象之间存在着整体与部分的关系。例如上例中
class Driver {
//使用成员变量形式实现聚合关系
Car mycar;
public void drive(){
mycar.run();
}
}
假如给上面代码赋予如下语义:车是一辆私家车,是司机财产的一部分。则相同的代码即表示聚合关系了。聚合关系一般使用setter方法给成员变量赋值。
假如赋予如下语义:车是司机的必须有的财产,要想成为一个司机必须要先有辆车,车要是没了,司机也不想活了。而且司机要是不干司机了,这个车就砸了,别人谁也别想用。那就表示组合关系了。一般来说,为了表示组合关系,常常会使用构造方法来达到初始化的目的,例如上例中,加上一个以Car为参数的构造方法
public Driver(Car car){
mycar = car;
}
所以,关联、聚合、组合只能配合语义,结合上下文才能够判断出来,而只给出一段代码让我们判断是关联,聚合,还是组合关系,则是无法判断的。
组合的示例代码java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于组合数java、组合的示例代码java的信息别忘了在本站进行查找喔。






