123456 所有组合 递归

利用递归进行解决,这里没有考虑字符串中含有重复字符的情况,当字符串长度为1的时候,输出字符,否则递归调用函数

package Varstatic;

import java.util.Arrays;

public class Varstatic {

public static void main(String[] args){
String str = "123456";
getString("",str);
}
static int sum=0;
private static void getString(String former,String latter){

if(latter.length()==1){
System.out.println(former+latter);
sum++;
System.out.println(sum);
}
else{
int len= latter.length();

for(int i=0;i<len;i++){
String temp = latter.substring(i,i+1);
String tf = former+temp;
String tl=latter.replace(temp,"");
getString(tf,tl);

}
}

}
}

时间: 2024-11-21 05:06:38

123456 所有组合 递归的相关文章

排列组合递归和非递归算法总结篇

#include <iostream> #include <string> #include <math.h> #include <vector> #include <algorithm> using namespace std; //method1 bool flag[5] ; int arr[5] = {1,2,3,4,5}; int len = sizeof(arr)/sizeof(int); void Comb(int n,int cou

递归——CPS(二)

给出一个计算树深度的函数: function treeDepth(curtree) { if(curtree == null) return 0; else { var leftDepth = treeDepth(curtree.left); var rightDepth = treeDepth(curtree.right); return 1 + Math.max(leftDepth, rightDepth); } } 现在要用CPS风格重写这个函数. 避免函数的返回值,而是将返回值传入con

华为机试ACM(字符组合问题)

今晚做了华为的机试,3道ACM题,最后一道是实现从M个不同字符中任取N个字符的所有组合. eg: input:ABC 2 output:AB AC BC 第一个输入为字符串,第二个输入为组合的字符个数,当N=0或者N>M时,输出“ERROR”. 思路:可以用递归的算法解决,例如ABC中2个字符的所有组合,先选取第一个的A,那包含A的2个字符的所有组合就是从后面剩余的BC中取1个字符的所有组合,然后选取第二个的B,那包含B的2个字符的所有组合就是从后面剩余的C中取1个字符的组合,即只有C,到选取第

[Swust OJ 666]--初来乍到(题号都这么溜~~,递归,找规律)

题目链接:http://acm.swust.edu.cn/problem/0666/ Time limit(ms): 1000 Memory limit(kb): 65535 Description 小李去埃及旅游,但是初来乍到的他不认识罗马数,所以请你将阿拉伯数n ( 0 < n <= 1000)改写为罗马数. Input N行数据,每行一个满足0 < n <= 1000的数: 结束以EOF判断 Output 每行一个,见输出示例 Sample Input 1 10 35 99

[学习笔记] 多项式与快速傅里叶变换(FFT)基础

引入 可能有不少OIer都知道FFT这个神奇的算法, 通过一系列玄学的变化就可以在 $O(nlog(n))$ 的总时间复杂度内计算出两个向量的卷积(或者多项式乘法/高精度乘法), 而代码量却非常小. 博主一年半前曾经因COGS的一道叫做"神秘的常数 $\pi$"的题目而去学习过FFT, 但是基本就是照着板子打打完并不知道自己在写些什么鬼畜的东西OwO 不过...博主这几天突然照着算法导论自己看了一遍发现自己似乎突然意识到了什么OwO然后就打了一道板子题还1A了OwO再加上午考试差点AK

【编程之美】中的美中不足,谈谈我的理解

拿到书本后,看了一下,里面的题目并不是太难,都是初级算法,或者有些根本就不用到算法. 在二分查找的知识点中,还是比较新颖的,看来我写的二分一直存在bug啊.在看看其他方面的题目,很多题目还是要总结分享一下的, 第三章的题目全部看完了,自己也写了一下程序进行了优化.部分作者的程序没有看~cpp的变量名太长了,又不是写项目啊~自己添加的名字估计自己以后看比较方便,对于读者来说,估计作用并不是太大.不如写成伪算法,这样更好一点啊.对吧~~~~~~ 话说这个完全可以用二进制编程来处理.具体的二进制编程技

win32api win32gui win32con 窗口句柄 发送消息 常用方法

Pywin32是一个Python库,为python提供访问Windows API的扩展,提供了齐全的windows常量.接口.线程以及COM机制等等. 1.通过类名和标题查找窗口句柄,并获得窗口位置和大小 import win32gui import win32api classname = "MozillaWindowClass" titlename = "百度一下,你就知道 - Mozilla Firefox" #获取句柄 hwnd = win32gui.Fin

第17章 科赫雪花小包裹

科赫雪花小包裹问题分析: 科赫曲线,也叫雪花曲线. 用python绘制科赫曲线 一条直线取1/3长的线段,把中间的1/3段去掉,然后在搭建成60°的三角状,emmm,如下图所示: 科赫雪花的绘制 递归思想:函数+分支 递归链条:线段的组合 递归基例:初识线段 1 #KochDrawV1.py 2 import turtle 3 def koch(size, n): 4 if n == 0: 5 turtle.fd(size) 6 else: 7 for angle in [0, 60, -120

九宫格问题、16宫格

九宫格(Lo Shu Square)问题 将1到9的数字按照一定方式填入九宫格内.使得每一列.每一行以及两条对角线上的值都相等. 全排列(递归) 首先,用枚举法,生成各种(3, 3)的二维数组: def perm(li): """递归实现列表的全排列 如果输入是[1],那么返回[[li],]表示有一种排列 如果输入是[1, 2],期望的返回的是[[1, 2], [2, 1]],这是要之后的递归实现的 """ if len(li) <= 1: