java字符串组合排列递归问题

问题描述

java字符串组合排列递归问题

String a0,a1,a2,...,an;
a0="我饿全文";
a1="ABC";
a2="abc";
''''
an="wre";
每次从每个an中只取一个字符组合成字符串,全部排列出来,如:
我+A+a+w,我+A+a+r等。这个怎么弄啊?

解决方案

 /* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String[] arr = new String[3];
        arr[0] = "abc";
        arr[1] = "123";
        arr[2] = "xyz";
        String[] arr1 = new String[1];
        arr1[0] = "";
        String[] arr2 = arr1;
        for (int i = 0; i < arr.length; i++)
        {
            arr2 = new String[arr1.length * arr[i].length()];
            for (int j = 0; j < arr2.length; j++)
            {
                arr2[j] = arr1[j / arr[i].length()] + String.valueOf(arr[i].charAt(j % arr[i].length()));
            }
            arr1 = arr2;
        }
        for (String s : arr2)
            System.out.println(s);
    }
}

解决方案二:

http://ideone.com/V0t44J

 a1x
a1y
a1z
a2x
a2y
a2z
a3x
a3y
a3z
b1x
b1y
b1z
b2x
b2y
b2z
b3x
b3y
b3z
c1x
c1y
c1z
c2x
c2y
c2z
c3x
c3y
c3z

解决方案三:

反正我不喜欢递归,也没有必要递归。

解决方案四:

http://blog.chinaunix.net/uid-20690917-id-1568734.html
http://www.cnblogs.com/longhs/archive/2013/06/14/3135433.html

解决方案五:

谢谢,跟我要的还是有点不一样。

时间: 2024-11-05 06:17:09

java字符串组合排列递归问题的相关文章

递归求解几类排列组合问题(四、普通选择性组合排列)

四.普通选择性组合排列 对于搜索的深度很深或深度不固定的情况,则无法用枚举的方法来设置循环嵌套的层数,这时可以考虑用递归法来完成搜索任务.递归是一种常用算法,它是搜索的另一种实现方式.如果在算法设计中采用一个函数或过程直接或间接地调用它自身来解决问题的方法,则称该方法为递归算法.递归算法必须要设计好一个或若干个确定的递归终止条件. Sample Input  5 3   1 2 3 4 5   Sample Output  123  124  125  134  135  145  234  2

递归求解几类排列组合问题(五、生成全子集组合排列)

对于搜索的深度很深或深度不固定的情况,则无法用枚举的方法来设置循环嵌套的层数,这时可以考虑用递归法来完成搜索任务.递归是一种常用算法,它是搜索的另一种实现方式.如果在算法设计中采用一个函数或过程直接或间接地调用它自身来解决问题的方法,则称该方法为递归算法.递归算法必须要设计好一个或若干个确定的递归终止条件. 五.生成全子集组合排列(不含空集) Sample Input  4   1 2 3 4   Sample Output  1  12  123  1234  124  13  134  14

递归求解几类排列组合问题(三、非重复组合排列)

三.非重复组合排列(含重复数字时,生成不重复组合排列) 对于搜索的深度很深或深度不固定的情况,则无法用枚举的方法来设置循环嵌套的层数,这时可以考虑用递归法来完成搜索任务.递归是一种常用算法,它是搜索的另一种实现方式.如果在算法设计中采用一个函数或过程直接或间接地调用它自身来解决问题的方法,则称该方法为递归算法.递归算法必须要设计好一个或若干个确定的递归终止条件. Sample Input  4   1 2 2 3   Sample Output  1223  1232  1322  2123 

递归求解几类排列组合问题(一、类循环组合排列)

对于搜索的深度很深或深度不固定的情况,则无法用枚举的方法来设置循环嵌套的层数,这时可以考虑用递归法来完成搜索任务.递归是一种常用算法,它是搜索的另一种实现方式.如果在算法设计中采用一个函数或过程直接或间接地调用它自身来解决问题的方法,则称该方法为递归算法.递归算法必须要设计好一个或若干个确定的递归终止条件. 一.类循环组合排列 Sample Input :  4 2   Sample Output  0000  0001  0010  0011  0100  0101  0110  0111 

java实现归并排序和树形排序(锦标赛制):java字符串分隔或的形式

String[] b=str.split("query|,");//query分隔或者逗号分隔 归并排序,递归实现 public class MergeSort2 { // 对data数组中的 [a,b) 区间的数据进行归并排序, // 排序结束后,[a,b)间数据处于升序有序状态 static void mergeSort(int[] data, int a,int b) { if (a >= b) return; int mid=(a+b)/2;//拆分排序 mergeSor

百度面试题解析:字符串的排列(字符串)

题目:输入一个字符串,打印出该字符串中字符的所有排列. 例如输入字符串abc,则输出由字符a, b, c 所能排列出来的所有字符串 abc, acb, bac, bac, cab和cab. 分析: 这题主要考递归思想. 依次取出每个字符,剩下的字符的字符串所有排列都打印出来,再加上开始的字符. 更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/ 实现: #include<iostream> #include

Java字符串分割

1. java.lang.String 的 split() 方法, JDK 1.4 or later split public String[] split(String regex, int limit) 根据匹配给定的正则表达式来拆分此字符串. 此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止.数组中的子字符串按它们在此字符串中的顺序排列.如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串. limit 参数

Java字符串排序中文+数字

  思路: 在Java中,排序需要复写的是 equals 方法 和 Comparable<T> 接口 的public int compareTo(T o); 方法 步骤: 1. 使用正则表达式来判断数字,多个连续的数字作为一组, 2. 一次检索出数字组合, 3. 检出下一组数字,如果有,则进入步骤4,否则进入步骤6. 4. 如果两组数字出现的位置相等,并且前面部分的字符串相等,则进入第5步.否则break,跳到第6步. 5. 如果前面部分的字符串完全一致.则比较两个数字的大小,如果大小一致,则

JAVA字符串格式化-String.format()的使用_java

本篇介绍JAVA字符串格式化-String.format()的使用,具体如下: 常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处.format()方法有两种重载形式. format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串. format(Locale locale, String for