java递归求abc排序(递归求全排列c语言完整代码)

本篇文章给大家谈谈java递归求abc排序,以及递归求全排列c语言完整代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、java输入一个字符串,使用递归输出所有可能的排列,如输入abc,输出abc,acb,bac,bca,cab,cba。2、java递归算法3、JAVA中递归排序的问题!

java输入一个字符串,使用递归输出所有可能的排列,如输入abc,输出abc,acb,bac,bca,cab,cba。

递归就是自己调用自己,每次变换传递的参数:

1、定义方法possibleStrings,传入组合数的长度为3,字符为输入的a,b,c:

public static void possibleStrings(int maxLength, char[] alphabet, String curr) {

// 如果递归到最大长度,则打印

if(curr.length() == maxLength) {

System.out.println(curr);

// 否则继续递归,从输入的字母中一次添加,构成新的组合后输出

} else {

for(int i = 0; i alphabet.length; i++) { //for循环从0到最大长度

String oldCurr = curr;//保存当前的组合字符串

curr += alphabet[i]; //继续追加

possibleStrings(maxLength,alphabet,curr);//递归:重新计算是否达到最大长度,如果达到就打印出来。

curr = oldCurr;// 保存旧值到当前字符串中

}

}

}

2、调用测试:

public static void main(String[] args) {

// 模拟输入的字母,这里假设a、b、c

char[] alphabet = new char[] {‘a’,’b’,’c’};

// 找出所有的abc的排列组合

StringExcersise.possibleStrings(3, alphabet,””);

}

java递归算法

1.汉诺塔问题

import javax.swing.JOptionPane;

public class Hanoi {

private static final String DISK_B = “diskB”;

private static final String DISK_C = “diskC”;

private static final String DISK_A = “diskA”;

static String from=DISK_A;

static String to=DISK_C;

static String mid=DISK_B;

public static void main(String[] args) {

String input=JOptionPane.showInputDialog(“please input the number of the disks you want me move.”);

int num=Integer.parseInt(input);

move(num,from,mid,to);

}

private static void move(int num, String from2, String mid2, String to2) {

if(num==1){

System.out.println(“move disk 1 from “+from2+” to “+to2);

}

else {

move(num-1,from2,to2,mid2);

System.out.println(“move disk “+num+” from “+from2+” to “+to2);

move(num-1,mid2,from2,to2);

}

}

}

2. 这是一个排列的例子,它所做的工作是将输入的一个字符串中的所有元素进行排序并输出,例如:你给出的参数是”abc” 则程序会输出:

abc

acb

bac

bca

cab

cba

(1)算法的出口在于:low=high也就是现在给出的排列元素只有一个时。

(2)算法的逼近过程:先确定排列的第一位元素,也就是循环中i所代表的元素,

然后low+1开始减少排列元素,如此下去,直到low=high

public static void permute(String str) {

char[] strArray = str.toCharArray();

permute(strArray, 0, strArray.length – 1);

}

public static void permute(char[] list, int low, int high) {

int i;

if (low == high) {

String cout = “”;

for (i = 0; i = high; i++)

cout += list[i];

System.out.println(cout);

} else {

for (i = low; i = high; i++) {

char temp = list[low];

list[low] = list[i];

list[i] = temp;

permute(list, low + 1, high);

temp = list[low];

list[low] = list[i];

list[i] = temp;

}

}

}

3。这是一个组合的例子,与上述的例子相似,只是它所做的工作是,输出所给字符串中制定数目的元素的组合种类

(1)程序出口在于n=1,此时只要输出目标数组的所有元素即可

(2)逼近过程,当n1 的时候,我们先取第一个元素放入目标数组中,然后n-1,如此下去,最后出来。

import javax.swing.JOptionPane;

public class Combination {

/**

* @param args

*/

public static void main(String[] args) {

String input = JOptionPane.showInputDialog(“please input your String: “);

String numString = JOptionPane.showInputDialog(“please input the number of your Combination: “);

int num = Integer.parseInt(numString);

Combine(input, num);

}

private static void Combine(String input, int num) {

char[] a = input.toCharArray();

String b = “”;

Combine(a, num, b, 0, a.length);

}

private static void Combine(char[] a, int num, String b, int low, int high) {

if (num == 0) {

System.out.println(b);

} else {

for (int i = low; i a.length; i++) {

b += a[i];

Combine(a, num – 1, b, i+1, a.length);

b=b.substring(0, b.length()-1);

}

}

}

}

JAVA中递归排序的问题!

这是一个排列的例子,它所做的工作是将输入的一个字符串中的所有元素进行排序并输出,例如:你给出的参数是”abc” 则程序会输出:

abc

acb

bac

bca

cab

cba

(1)算法的出口在于:low=high也就是现在给出的排列元素只有一个时。

(2)算法的逼近过程:先确定排列的第一位元素,也就是循环中i所代表的元素,

然后low+1开始减少排列元素,如此下去,直到low=high

public static void permute(String str) {

char[] strArray = str.toCharArray();

permute(strArray, 0, strArray.length – 1);

}

public static void permute(char[] list, int low, int high) {

int i;

if (low == high) {

String cout = “”;

for (i = 0; i = high; i++)

cout += list[i];

System.out.println(cout);

} else {

for (i = low; i = high; i++) {

char temp = list[low];

list[low] = list[i];

list[i] = temp;

permute(list, low + 1, high);

temp = list[low];

list[low] = list[i];

list[i] = temp;

}

}

}

java递归求abc排序(递归求全排列c语言完整代码)

关于java递归求abc排序和递归求全排列c语言完整代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年4月2日 18:40:38
下一篇 2024年4月2日 18:52:58

相关推荐

  • 错位排列c语言编程,c语言排错方法

    c语言如何把数字顺序颠倒 在上面的代码中,首先使用scanf()函数输入一个整数。然后,使用while循环将输入的整数颠倒存储在reverse中,具体方法是每次取输入整数的最后一位数字,并将其加入到reverse的末尾,然后将输入整数除以10。 颠倒数字符合先进后出的顺序,可以借助栈来执行。首先分解这个数字,将每一位存到栈中,然后在将栈中的数字逐个出栈,组合…

    2024年5月19日
    3900
  • c语言accounts,递归函数C语言

    (急)!C语言程序设计题—银行帐户管理系统 要求:用C语言实现系统;利用结构体数组实现信息的数据结构设计;系统的各个功能模块要求用函数的形式实现;界面友好(良好的人机交互),程序加必要的注释。 就定义一个结构类型,包含你上面说的账户信息成员变量。然后根据输入创建链表。复杂一点使用fopen函数创建或读取已有文件,然后用fscanf函数把你链表中的…

    2024年5月18日
    3900
  • c语言中10的阶乘递归,c语言计算10的阶乘并输出

    用c语言如何实现10!累乘 1、C语言一到十的阶乘编程方法:记一个变量sum=0,用于累加。记一个变量fact=1,用于累乘。定义i从1到10循环。每次循环将i累乘至fact,即fact=fact*i; // fact此时等于i的阶乘,类似于6!=5!*6。 2、只用一个for循环,int型计数变量i从1步长为1变化到10,用一个初值为1的int型变量s记录…

    2024年5月18日
    7600
  • java非递归二叉树高度,java二叉树非递归遍历

    求数据结构(JAVA版)实验树和二叉树题目答案 中序遍历是左根右,中间是根;前序遍历前面是根左右,前面是根。 原理不细说了,递归,先结束的先输出。这里的根是指相对的根,一边看图吧,光说不好描述。 .设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是( D )。 下列数据结构中,能用二分法进行查找的是__A___。A、顺序存储的有序线性表 B…

    2024年5月17日
    3300
  • 全排列java,全排列计算公式

    排列组合–原理及实现 1、排列组合是组合学最基本的概念。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。 2、排列组合法是投资者运用科学的方法将股票内容与价位进行全方位的排列组合,并据此进行股票买卖的方法。股票内容与价位的排列组合,一般有四种情形:(1)内容佳,价位高。…

    2024年5月17日
    3700
  • 递归实现倒置c语言,c++递归倒序输出数字

    C语言如何用递归实现链表的逆序输出、释放、倒序?求大神给出这三段代码… 逆序输出 最简单的方法 是使用递归函数。void reverse_display(Node * head){ if(head == NULL) return; reverse_display(head-next); printf(%d,head-value);}这样代码是最简…

    2024年5月17日
    3200
  • java画图板课程设计,java简单画图板完整代码

    Java课程设计!急!!!(高分) java课程设计题目及代码分别是:题目:计算器。设计内容是设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算。设计要求是设计的计算器应用程序可以完成家法、减法、乘法、除法和取余运算。 项目1:基于网络的聊天系统的设计和实现具有如下功能:实现二人密聊。实现三人聊天。要求:撰写课程设计报告,并打印。交电子文档(源代…

    2024年5月17日
    3100
  • excel垂直并排快捷键,excel垂直排列

    Excel表格怎么垂直并排显示 第一步,在Excel中同时打开需要的两份文件,接下来在工具栏上方选择【视图】,如下图所示。第二步,选择【全部重排】——【垂直并排】,如下图所示。 点击“重排窗口”选项,在弹出的窗口中,可以通过“平铺”、“水平并排”、“垂直并排”、“重叠”等选项来实现同时查看两个excel工作表的内容。 菜单栏【视图】–【新建窗口】…

    2024年5月16日
    4300
  • java递归打印abc全排列,java递归打印阶乘

    京东商城的笔试题:用java语言打印出a,b,c,d的所有可能组合……求指点… 1、里面的myvalue[][] 定义了你的六个数组。然后number[]对应的就是从myvalue里面index来取值。这程序是从第一个数组里面的第5个,第二个数组的第四个。。取出来之后排序。打印 如果不会debug的话,要等以后了。 2、Integer a = n…

    2024年5月16日
    3500
  • c语言排列顺序,c语言 排列

    c语言的两种排序? 1、有选择排序法和冒泡排序法两种,都是非常经典的排序方法,都是作为一个程序员必须掌握的排序方法。这两种的区别在比较的逻辑不相同,因此if中的判断条件与for循环中的代码也是不相同的,要根据实际情况选择不同的排序方法。 2、冒泡排序(最常用)冒泡排序是最简单的排序方法:原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一…

    2024年5月16日
    3600

发表回复

登录后才能评论



关注微信