java組合
Ⅰ java實現排列組合
2位數排列組合的話,應該不止[1,2],[2,3],[3,4]吧?
代碼在下面:
privatevoidpailie(char[]a){
for(inti=0;i<a.length-1;i++){
for(intj=i+1;j<a.length;j++){
System.out.print("["+a[i]+","+a[j]+"]");
}
}
}
Ⅱ 關於JAVA組合排列的實現
importjava.util.Arrays;
importjava.util.LinkedList;
publicclassRecursionNArray
{
privatestaticLinkedList<char[]>recursionSub(LinkedList<char[]>list,intcount,char[][]array,intind,
intstart,int...indexs)
{
start++;
if(start>count-1)
{
returnnull;
}
if(start==0)
{
indexs=newint[array.length];
}
for(indexs[start]=0;indexs[start]<array[start].length;indexs[start]++)
{
recursionSub(list,count,array,0,start,indexs);
if(start==count-1)
{
char[]temp=newchar[count];
for(inti=count-1;i>=0;i--)
{
temp[start-i]=array[start-i][indexs[start-i]];
}
list.add(temp);
}
}
returnlist;
}
publicstaticvoidmain(String[]args)
{
char[]a={'中','國','有','個','人'};
char[]b={'中','國','有','個','人'};
char[]c={'中','國','有','個','人'};
char[]d={'中','國','有','個','人'};
char[][]temp={a,b,c,d};
LinkedList<char[]>list=newLinkedList<char[]>();
recursionSub(list,temp.length,temp,0,-1);
for(inti=0;i<list.size();i++)
{
System.out.println(Arrays.toString(list.get(i)).replaceAll("[\[\]\,\s]",""));
}
}
}
Ⅲ Java實現幾個字母的所有組合
1樓扯淡,二樓網上復制的,不完全符合要求,3樓的有些問題,不能輸出所有的不是貶低各位
這是我在2樓基礎上改的
package main;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
String s="abcdaaa";
ger(split(s,true));
}
/**
*
* @param target
* @param isDeleteRepeat 是否去掉重復的字母例如abcda去重則為abcd不去重則為abcda即2個a當做不同的字母看
* @return
*/
public static List<String> split(String target,boolean isDeleteRepeat){
List<String> list=new ArrayList<String>();
for(int i=0;i<target.length();i++){
if(!(isDeleteRepeat&&list.contains(String.valueOf(target.charAt(i))))){
list.add(String.valueOf(target.charAt(i)));}
}
return list;
}
public static List<String> ger(List<String> string){
List<String> list=new ArrayList<String>();
for(int i=1;i<=string.size();i++){
sort(string,new ArrayList<String>(),i);
}
return list;
}
private static void sort(List datas, List target,int num) {
if (target.size() == num) {
for (Object obj : target)
System.out.print(obj);
System.out.println();
return;
}
for (int i = 0; i < datas.size(); i++) {
List newDatas = new ArrayList(datas);
List newTarget = new ArrayList(target);
newTarget.add(newDatas.get(i));
newDatas.remove(i);
sort(newDatas, newTarget,num);
}
}
}
Ⅳ java 所有組合
public static void main(String[] args) {
String s="123";
char[] ss= s.toCharArray();
StringBuffer set= new StringBuffer();
for(int i=0;i<6;i++){//6是所有組合總數,也就是ss.length 值的階乘
set.delete(0,set.length());
for(int j=0;j<ss.length;j++){
set.append(ss[(i+j)%ss.length]);
}
System.out.println(set.toString());
}
}
Ⅳ java組合問題
設計幾個數組,幾個計數器,接收A打頭的進第一個數組,比如A1,A2...AN,然後N用計數器N1接收,B打頭進第二個數組(原理跟A一樣),然後多重循環就能出來.我是這樣想的,不知道行不行
Ⅵ java實現數組的所有組合
最簡單的辦法是三層循環
Ⅶ java實現排列組合輸出
完成了一種實現,發給你參考下。
不過感覺應該還有更好的辦法,有時間我會繼續研究下.
importjava.util.ArrayList;
importjava.util.Arrays;
importjava.util.HashSet;
importjava.util.List;
importjava.util.Set;
publicclassTestQiuhe{
//集合a{1,2,3,5,7,10},輸出不多於4個元素(不重復)的加和為22的組合。
publicstaticvoidmain(String[]args){
int[]nums={1,2,3,5,7,10};
intl=nums.length;
List<int[]>results=newArrayList<int[]>();
for(inti1=0;i1<l;i1++){
for(inti2=0;i2<l;i2++){
if(nums[i1]==22){
results.add(newint[]{nums[i1]});
}
if(i2!=i1){
if(nums[i1]+nums[i2]==22){
results.add(newint[]{nums[i1],nums[i2]});
}
for(inti3=0;i3<l;i3++){
if(i3!=i1&&i3!=i2){
if(nums[i1]+nums[i2]+nums[i3]==22){
results.add(newint[]{nums[i1],nums[i2],nums[i3]});
}
for(inti4=0;i4<l;i4++){
if(i4!=i1&&i4!=i2&&i4!=i3){
if(nums[i1]+nums[i2]+nums[i3]+nums[i4]==22){
results.add(newint[]{nums[i1],nums[i2],nums[i3],nums[i4]});
}
}
}
}
}
}
}
}
//去重
Set<String>reSet=newHashSet<>();
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中什麼叫組合
組合就是 A類的對象是B類的成員變數。相當於 A類是B類對象的一個屬性!
組合和繼承都很常見的!
Ⅸ java找出數字的所有組合
package com.zy.test2;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class TestDi {
public static void main(String[] args) {
String s[] = {"1", "2", "3"};
List<String> list = new ArrayList<String>();
listAll(Arrays.asList(s), "", list);
Collections.sort(list);
for (String str : list)
{
System.out.println(str);
}
}
public static void listAll(List<?> candidata, String prefix, List<String> list)
{
if (prefix != null && prefix != "")
{
list.add(prefix);
}
for (int i = 0; i < candidata.size(); i++)
{
List<?> temp = new LinkedList<>(candidata);
listAll(temp, prefix + temp.remove(i), list);
}
}
}