public class ArrayPermutation {
public static void main(String[] args) {
char[] str = {'a','b','c','d'};
dopa(str,str.length);
}
/*
* 对数组a的第0到第n-1项进行全排列
*/
public static void dopa(char[]a,int n){
if(n==1){//如果n为1,则无需再进行全排列,此时应该输出数组了
printArray(a);//打印数组
//return;
}else{
for(int i=0;i<n;i++){//
dopa(a,n-1);//对数组a的第0到第n-2项进行全排列
// if(n==2){
// printArray(a);
// }
rotate(a,n);//轮换数组的第n-1项
}
}
}
/**
* 轮换数组的第n-1项,为确保数组下次能够正确轮换,需要将数组第0到第n-2项均右移一位,
* 然后将第n-1项放到第0位
* @param a
* @param n
*/
private static void rotate(char[] a, int n) {
char temp = a[n-1];
for(int i=n-1;i>0;i--){
a[i]=a[i-1];
}
a[0] = temp;
}
/**
* 打印数组
* @param a
*/
public static void printArray(char[]a){
for(int i=0;i<a.length;i++){
System.out.print(a[i]);
}
System.out.println();
}
}
分享到:
相关推荐
*1.--------紫色线条:DDA算法--------- *2.--------红色线条:逐点比较算法--------- *3.--------绿色线条:Bresenham算法--------- 【在压缩包里附有 .exe 文件,可直接双击运行,看结果。工程中需要导入winbgi....
算法 第4版-(美)Robert Sedgewick著,谢路云 译(Java描述)_13099749-高清完整扫描版共651页,人民邮电出版社2012年10月出版,这是普林斯顿大学Princeton University的算法教材(经典之作),Java描述的,作者罗伯特....
在处理某些问题时,如生成所有可能的组合或者解决排列组合问题,全排列算法是必不可少的工具。全排列指的是从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排列起来,所有的排列情况就构成了全排列。 ...
QT实现的Opencv图像处理、点云显示、例子演示系统,最新版:2017-11-29,新加入了树节点右键功能。图像处理中加入了图像融合功能。全部工程给大家共享,已经放到最低分了。然后不知道怎么用的童鞋们加我QQ498771026...
leetcode备忘录系统算法-数据结构 两个不错的排序算法及其 Big-O(完成) 归并排序 快速排序 冒泡排序 基本数据结构实现及其 Big-O 复杂性 哈希图 堆 队列 双端队列双端队列 链表 反转链表 合并两个排序列表 回文...
算法</span><span lang="EN-US" style="DISPLAY: none; FONT-SIZE: 10.5pt; FONT-FAMILY: "Times New Roman"; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso...
内容概要:该篇文章详细介绍了利用回溯算法求解1到n之间的整数全排列的方法。通过定义全局变量存储排列组合结果和标志数组跟踪元素是否已经存在于当前序列中。主要部分展示了核心函数——dfs(depth-first search)的...
在MATLAB编程环境中,生成全排列矩阵是一项常见的任务,尤其在处理组合数学、数据分析或算法设计时。全排列是指从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排列的所有可能的方式。当m=n时,即为全排列。本...
简介: 本软件为开源软件。软件所有数据均保存在本地,安全可靠。 功能: ... ...6、软件提示更新功能,让您能实时掌握软件的更新动态。...8、回收站功能,您再也不必因为误删数据而导致...3、更换为更加安全的数据加密算法。
同时,提供了链接到一个博客文章,其中可能包含了更多关于使用wK算法处理后的成像效果和实现细节。 **标签解析:** 1. **wK算法** - 这是处理遥感数据的核心技术,可能是一种专有的、针对SAR数据的处理方法,但...
%-------Population:种群,nPopulation*nCity矩阵,每行由{1,2,...,nCity}某一个全排列构成; %-------generation:算法终止条件一,迭代代数; %-------nR:算法终止条件二,最短路径值连续nR代不变; %-------R:...
- **标准表示法和常见函数**:如大O表示法、小o表示法、Ω表示法等,以及常见的数学函数如对数函数、多项式函数等。 ##### 第4章:分治 - **最大子数组问题**:寻找给定数组中连续子数组的最大和。 - **斯特拉斯...
全排列算法: 比如字符串abc,全排列结果为abc,acb,bac,bca,cba,cab。
全排列算法广泛应用于程序设计中,尤其是在需要穷举所有可能性的场合,比如组合数学、游戏设计、密码学等领域。 在C或C++中实现全排列算法,主要的思想是递归。基本步骤是首先固定第一个元素,然后对剩余的n-1个...
全排列算法是计算机科学中一个基础且重要的问题,它涉及到数组或序列的所有可能的线性排列方式。在处理这个问题时,我们通常会采用递归或迭代的方式来实现。下面将详细介绍全排列算法及其优化方法。 全排列算法的...
全排列算法
《算法导论》是一本广泛使用的计算机科学教材,涵盖了算法设计与分析的基础知识及其在计算领域的应用。本书不仅适合本科生和研究生作为教材使用,也适用于专业人士作为参考书籍。 #### 三、主要内容概览 ##### 第...
log-MAP算法,全称为对数最大后验概率算法,是一种利用对数运算简化计算复杂度的译码算法。它能够较为准确地计算出最可能的传输序列,但相对于Max-Log-MAP算法,其计算量相对较大。log-MAP算法的核心在于通过计算...
整个流程的总结如下: ...->APP 层调用 Camera.open() ->Camera.java 调用 JNI native_setup() ->JNI 层调用 android_hardware_Camera_native_setup -> HAL 客户端(Camera.cpp)调用 connect 与服务端(CameraService.cpp...
### 由数据范围反推算法复杂度及其应用 在计算机科学与编程竞赛中,了解算法的时间复杂度对于选择合适的算法解决特定问题至关重要。通过题目给出的数据规模(即输入数据的大小),我们可以反向推导出适合该问题的...