一个字符串s="1245"这个字符串不是固定的,是一个变量
列举出所有的的组合数据
例如
1245,1254,1452,1425,1524,1542
2145,2154,2415,2451,2541,2514
4125,4152,4215,4251,4512,4521
5124,5142,5214,5241,5412,5421
-------------------------
import java.util.*;
public class Test{
public static void main(String[] args) {
System.out.println(Arrays.toString(permutation("1234")));
}
private static String[] permutation(String orginal){
ArrayList list = new ArrayList();
if(orginal.length() == 1){
return new String[]{orginal};
} else{
for (int i = 0; i < orginal.length(); i++) {
String s = orginal.charAt(i) + "";
String result = "";
String resultA = result + s;
String leftS = orginal.substring(0, i) + orginal.substring(i + 1, orginal.length());
for (String element : permutation(leftS)) {
result = resultA + element;
list.add(result);
}
}
return (String[]) list.toArray(new String[list.size()]);
}
}
}
-------------------------
import java.util.ArrayList;
import java.util.List;
public class dg {
public static void main(String[] args) {
String s="1245";//原字符串
List<String> result = new ArrayList<String>();//存放结果信息。
list(s, "", result);//列出字符的组合,放入result
System.out.println(result.size());;
System.out.println(result);
}
/**
* 列出基础字符串(base)的所有组合
* @param base 以该字符串作为基础字符串,进行选择性组合。
* @param buff 所求字符串的临时结果
* @param result 存放所求结果
*/
public static void list(String base,String buff,List<String> result){
if(base.length()<=0){
result.add(buff);
}
for(int i=0;i<base.length();i++){
list(new StringBuilder(base).deleteCharAt(i).toString(),buff+base.charAt(i),result);
}
}
}
分享到:
相关推荐
"编程之美"这个主题涵盖了各种有趣的算法,这些算法不仅能够帮助我们理解计算机科学的本质,还能激发我们的创新思维和逻辑能力。下面我们将深入探讨一些常见的有趣算法。 1. **排序算法**:排序是最基础也是最广泛...
遗传算法的应用广泛,包括但不限于机器学习、工程设计、网络路由优化、组合优化问题(如旅行商问题)以及人工智能等领域。PPT可能还会探讨遗传算法的优势和局限性,比如其全局搜索能力较强,但可能需要较多的计算...
以下是一些基于C语言的有趣算法示例,它们涵盖了数字操作、字符处理、数组操作、素数判断以及日期计算等多个方面: 1. **计算数字的和与积** (Sum_mul.c) 这个程序接收一个正整数`n`,通过循环计算每个数字的和(`s...
在算法设计领域,我们经常会遇到各种独特而有趣的挑战。这些挑战不仅锻炼我们的逻辑思维,还能在实际问题解决中发挥重要作用。下面将详细讨论标题和描述中提到的几个关键知识点:矩阵鞍点的求取、矩阵翻转以及多项式...
有26个元素a...z ...我写了一个回溯算法,结果有1.7G,Petium4算了5分钟,所以此算法只可学习,不可实践啊。。 详细请看:http://topic.csdn.net/u/20120827/11/82310200-cc30-46b8-93f7-cd7555ea2845.html
组合数学,这门深奥而有趣的数学分支,涵盖了生活中诸多看似简单实则复杂的问题。从四色问题到任务分配,从稳定婚姻理论到管理调度,它揭示了优化问题的规律和解决方案。 首先,四色问题,是组合数学中的经典难题。...
通过图形化的方法,本书降低了算法学习的门槛,使原本抽象复杂的概念变得生动有趣。书中的每一个算法都配有精心设计的插图,让读者在视觉上更好地把握算法的运行过程。 1. **算法基础**:书中首先介绍了算法的基本...
在IT行业中,游戏开发是一项非常有趣的领域,而麻将游戏的编程更是其中的一种挑战。本项目主要探讨了如何使用C++语言实现麻将胡牌算法,包括普通胡牌规则以及特殊的“癞子”(也称为万能牌)胡牌规则。这里我们将...
《毕业设计:关联规则与决策树组合算法在学生成绩分析中的研究》 在这个毕业设计项目中,我们探讨了如何运用关联规则和决策树这两种数据分析技术来深入理解并预测学生的学习成绩。这两种算法在数据挖掘领域有着广泛...
总的来说,蚁群算法结合了生物群体智慧与计算模型,为解决复杂优化问题提供了一种有效且有趣的途径。在Python编程中实现蚁群算法,不仅能够加深对算法的理解,也为实际应用提供了可能,例如在物流调度、资源分配等...
关联规则挖掘是数据挖掘领域中的一个关键方法,用于发现大量数据集中的有趣关系。Apriori算法是关联规则挖掘中最经典、最广泛使用的算法之一,由Rakesh Agrawal和Ramakrishnan Srikant在1994年提出。这个算法主要...
"有趣的算法"这一主题通常涵盖了那些在设计、实现或应用上具有独特性质或者引人入胜的算法。在 TypeScript 这种强类型、面向对象的编程语言中,我们可以利用其特性来更安全、高效地实现这些算法。下面将详细介绍几种...
这部分包含了各种有趣的算法,涵盖了数列、图形、搜索和排序等类别。下面是一些算法的具体介绍: - **费式数列(Fibonacci Sequence)** 费式数列是每个数都是前两个数之和的数列,通常用来介绍递归或动态规划算法...
这些搜索算法能够遍历所有可能的三角形组合,同时确保不会重复检查已考虑过的路径。以下是一些关键步骤和知识点: 1. **数据结构**:首先,我们需要将输入的二维矩阵表示为一个有效的数据结构,如二维数组或链表...
各章累计增加了70道习题,其中包括一些有趣的谜题和面试问题。《算法设计与分析基础(第3版)》十分适合用作算法设计和分析的基础教材,也适合任何有兴趣探究算法奥秘的读者使用,只要读者具备数据结构和离散数学的...
《妙趣横生的算法》是一本深入浅出地探讨算法的书籍,旨在通过生动有趣的方式,让读者理解和掌握各种核心算法。算法是计算机科学的灵魂,对于任何IT专业人士来说,理解并能熟练运用算法都是至关重要的。这本书的描述...
10. **数学算法**:结合数学知识,如组合数学、离散数学,可以解决一些有趣的算法问题,如寻找素数、计算圆周率等。 通过实践和理解这些Java趣味算法,开发者不仅可以提升编程技能,还能更好地理解和欣赏编程之美。...
综上所述,“算法谜题.pdf”很可能是一本旨在通过一系列有趣且富有挑战性的谜题来加深读者对算法理解和应用能力的书籍。通过这些谜题,读者不仅能够巩固已有的算法知识,还能够在实践中不断提升解决问题的能力。无论...
Eclat(Equivalence Class Clustering)算法是一种用于频繁项集挖掘和关联规则学习的高效算法,尤其在处理大规模...理解并应用Eclat算法可以帮助我们在大量数据中发现有趣的模式和关联,从而支持决策制定或业务洞察。