Java蓝桥杯全排列问题

蓝桥杯练习题_001_全排列问题

  • 问题: 给定n个字符,将这n个字符全排列有n!种情况,例如:给定三个字符ABC,则有ABC,ACB,BCA,BAC,CAB,CBA共321=6种情况。请输出给定字符个数时,所有的全排列情况,以及总个数。

  • 关键: 学会使用Vector向量类,利用递归的思想就行求解。简单介绍下Vector类:实现了一个动态数组,类似于ArrayList。和 ArrayList 很相似,但是两者是不同的:
      Vector 是同步访问的。
      Vector 包含了许多传统的方法,这些方法不属于集合框架。
    Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。
    其中常用的方法

//声明两个向量组
		Vector<Character> a = new Vector<Character>();
		Vector<Character> b = new Vector<Character>();
		a.add('a');   //添加元素
		a.add('b');
		b.add('c');
		for (int i = 0; i < 3; i++) {
			b.add(a.elementAt(i));   //把数组b中第i个元素添加到数组a中
			a.remove(i);			//去除元素

代码演示:

package lqc_2_13_001_全排列;

import java.util.Scanner;
import java.util.Vector;

public class Question1 {
    public static long count=0;
    private void fullPermutation(Vector<Character> sourse, Vector<Character> result) {
        if(sourse.size()==0){
            for (int i = 0; i < result.size(); i++) {
                System.out.print(result.elementAt(i));
            }
            System.out.print("\n");
            count++;	
            return;
        }
        for (int i = 0; i < sourse.size(); i++) {
            Vector<Character>tsourse=new Vector<Character>(sourse);
            Vector<Character>tresult=new Vector<Character>(result);
            tresult.add(sourse.elementAt(i));
            tsourse.remove(i);
            new Question1().fullPermutation(tsourse, tresult);
        }
        
    }
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        Vector<Character> sourse=new Vector<Character>();
        Vector<Character> result=new Vector<Character>();
        for (int i = 0; i < n; i++) {
            sourse.add((char)('A'+i));
        }
//   当读不懂程序时,不妨增添一些语句来查看数组中的元素,如下:       
//        for (int i = 0; i < sourse.size(); i++) {
//			System.out.println(sourse.elementAt(i));
//			System.out.println(result);
//		}
//        
        new Question1().fullPermutation(sourse, result);
        System.out.println(Question1.count);
    }
}
发布了11 篇原创文章 · 获赞 3 · 访问量 687

猜你喜欢

转载自blog.csdn.net/Crazyjava_/article/details/104309453
今日推荐