首页 > 其他 > 详细

递归实现变位数 (就是出现那些可能性)

时间:2020-01-05 23:14:29      阅读:116      评论:0      收藏:0      [点我收藏+]

变为数 说白了 把出现的可能 都现实出来

直接代码

 

 

package com.lm.digui;

 

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

 

/**

* 变位数数直白了就是把所有的可能都显示出来

* 那么我们开始 就会从哪里就开始呢

*/

public class changZM {

static int size;

static int count;

static char[] ch = new char[100];

 

public static void main(String[] args) throws IOException {

System.out.println("请输入字母");

// 键盘输入

String s = getString();

// 获取字节长度

size = s.length();

 

for (int i = 0; i < size; i++) {

// 将字母 分解成字节

ch[i] = s.charAt(i);

}

 

// 输入数字

doChange(size);

}

// 向前移动n-1次 ,循环n次

private static void doChange(int n) {

if (n == 1) {

return;

}

for (int i = 0; i < n; i++) {

doChange(n - 1);

if (n == 2) {

printDislay();

}

move(n);

}

 

}

 

 

/**

* \

* 打印出来函数

*/

private static void printDislay() {

if (count < 99) {

System.out.print(" ");

}

if (count < 9) {

System.out.print(" ");

}

System.out.print(++count + ":");

System.out.print(" ");

for (int i = 0; i < size; i++) {

System.out.print(ch[i]);

}

System.out.print(" ");

System.out.flush();

if (count % 6 == 0) {

System.out.println();

}

 

 

}

 

private static void move(int n) { // 把后面的字母向前移动一位

int j;

int posistation = size - n;

char temp = ch[posistation];

for (j = posistation + 1; j < size; j++) {

ch[j - 1] = ch[j];

}

ch[j - 1] = temp;

}

 

/**

* 键盘输入

*

* @return

*/

private static String getString() throws IOException {

InputStreamReader in = new InputStreamReader(System.in);

BufferedReader bf = new BufferedReader(in);

String string = bf.readLine();

return string;

}

}

 

 技术分享图片

递归实现变位数 (就是出现那些可能性)

原文:https://www.cnblogs.com/limingming1993/p/12153996.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!