导航:首页 > 编程大全 > java排列组合工具

java排列组合工具

发布时间:2023-02-21 10:26:01

1. java排列组合算法如题:用x、y,求出指定长度的所有排列组合。

按照你的要求编写的求x,y指定长度的所有排列组合的Java程序如下

importjava.util.ArrayList;
importjava.util.List;
publicclassEE{
publicstaticvoidcombination(List<String>list,StringsNumbers,StringsPath,intALen)
{
if(sPath.length()==ALen)
{
list.add(sPath);
return;
}
for(inti=0;i<sNumbers.length();i++)
{

combination(list,sNumbers,sPath+sNumbers.substring(i,i+1),ALen);
}
}
publicstaticvoidmain(String[]args){
List<String>output=newArrayList<String>();
System.out.println("组合");
combination(output,"xy","",5);
for(Strings: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个

2. 用Java编写程序;求字母A和B的各种排列组合(递归思想)

//PS:不太明白函数中Strings的意义,所以忽略了。
importjava.util.ArrayList;
importjava.util.List;


publicclassCompoundString{

privatestaticvoidgenerate(intn,List<String>results){
if(n==1){
return;
}
List<String>resultsTemp_A=newArrayList<String>();
List<String>resultsTemp_B=newArrayList<String>();
for(Stringstr:results){
Stringtemp_A=str+"A";
resultsTemp_A.add(temp_A);
Stringtemp_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
}

publicstaticvoidmain(String[]args){
List<String>results=newArrayList<String>();
results.add("A");
results.add("B");
generate(8,results);
for(Stringstr:results){
.out.println(str);
}
}
}

3. java 定义了5个数字的数组,显示输出所有的排列组合

数组排序有专门的API,这里就不说了

获取1-30的5个随机数即可

使数组的下标和里面的值相同,那么 可以通过 数组[26-当前下标] 是否被去除 来输出

int a[] = new int[31];

// 赋值,去除

for(int i=1;i<26/2;i++){

if(a[i]!=0 && a[26-i]!=0) 输出;

4. Java程序如何实现对字符串的排列组合问题

import java.math.BigInteger;
import java.util.*;

public class PermutationGenerator {

private int[] a;
private BigInteger numLeft;
private BigInteger total;
public PermutationGenerator(int n) {
if (n < 1) {
throw new IllegalArgumentException("Min 1");
}
a = new int[n];
total = getFactorial(n);
reset();
}

public void reset() {
for (int i = 0; i < a.length; i++) {
a[i] = i;
}
numLeft = new BigInteger(total.toString());
}

public BigInteger getNumLeft() {
return numLeft;
}

public BigInteger getTotal() {
return total;
}

public boolean hasMore() {
return numLeft.compareTo(BigInteger.ZERO) == 1;
}

private static BigInteger getFactorial(int n) {
BigInteger fact = BigInteger.ONE;
for (int i = n; i > 1; i--) {
fact = fact.multiply(new BigInteger(Integer.toString(i)));
}
return fact;
}

public int[] getNext() {

if (numLeft.equals(total)) {
numLeft = numLeft.subtract(BigInteger.ONE);
return a;
}

int temp;

// Find largest index j with a[j] < a[j+1]

int j = a.length - 2;
while (a[j] > a[j + 1]) {
j--;
}

// Find index k such that a[k] is smallest integer
// greater than a[j] to the right of a[j]

int k = a.length - 1;
while (a[j] > a[k]) {
k--;
}

// Interchange a[j] and a[k]

temp = a[k];
a[k] = a[j];
a[j] = temp;

// Put tail end of permutation after jth position in increasing order

int r = a.length - 1;
int s = j + 1;

while (r > s) {
temp = a[s];
a[s] = a[r];
a[r] = temp;
r--;
s++;
}

numLeft = numLeft.subtract(BigInteger.ONE);
return a;

}
//程序测试入口
public static void main(String[] args) {

int[] indices;
String[] elements = { "a", "b", "c"};
PermutationGenerator x = new PermutationGenerator(elements.length);
StringBuffer permutation;

while (x.hasMore())
{
permutation = new StringBuffer("%");
indices = x.getNext();
for (int i = 0; i < indices.length; i++) {
permutation.append(elements[indices[i]]).append("%");
}
System.out.println(permutation.toString());

}
}

}

先给你一个看看!

5. 用java程序编写,1234这四个数进行排列组合,

程序已写出,希望对你有帮助。
import java.util.ArrayList;
import java.util.List;
public class Order {
public static String[] str = {"1","2","3","4"};
public static void main(String[] args){
System.out.println("-------------");
for(String s:str){
System.out.println(s+" , ");
}
System.out.println("-------------");
for(String s:get2byte()){
System.out.print(s+" , ");
}
System.out.println("-------------");
for(String s:get3byte()){
System.out.print(s+" , ");
}
System.out.println("-------------");
for(String s:get4byte()){
System.out.print(s+" , ");
}
}
public static List<String> get2byte(){
List<String> list = new ArrayList<String>();
for(int i=0;i<str.length;i++){
for(int j=0;j<str.length;j++){
list.add(str[i]+str[j]);
}
}
return list;
}
public static List<String> get3byte(){
List<String> list = new ArrayList<String>();
for(int i=0;i<str.length;i++){
for(int j=0;j<str.length;j++){
for(int k=0;k<str.length;k++){
list.add(str[i]+str[j]+str[k]);
}
}
}
return list;
}
public static List<String> get4byte(){
List<String> list = new ArrayList<String>();
for(int i=0;i<str.length;i++){
for(int j=0;j<str.length;j++){
for(int k=0;k<str.length;k++){
for(int h=0;h<str.length;h++){
list.add(str[i]+str[j]+str[k]+str[h]);
}
}
}
}
return list;
}
}

阅读全文

与java排列组合工具相关的资料

热点内容
什么app能看香港房 浏览:590
丧尸电视剧哪个app看 浏览:196
电脑版上传视频找不到文件在哪 浏览:164
javastringtemplate 浏览:594
联想启天m7300能升级内存吗 浏览:698
精雕怎么打开图片文件 浏览:161
ug编程镗孔g76如何使用 浏览:719
7岁到18岁少儿编程学什么 浏览:413
mac文件怎么打印 浏览:756
农药登记许可证查询哪个网站 浏览:857
素材站用什么网站系统 浏览:173
ug如何用铰刀编程 浏览:647
三国志版本介绍 浏览:260
情侣用的定位app有哪些 浏览:244
怎么清楚苹果手机的健身数据 浏览:988
淘宝美工教程自学网 浏览:452
父子2006未删减版本 浏览:872
包头谁卖苹果6 浏览:504
化工企业停工有哪些文件通知要求 浏览:878
下载软件后文件夹在桌面 浏览:397

友情链接