JAVA蓝桥杯(1)字符排序

来源:互联网 发布:系统优化什么意思 编辑:程序博客网 时间:2024/06/06 14:11

问题描述

算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。

解决方法

import java.util.Scanner;import java.util.Vector;public class Question1 {    public static int total = 0;    private static Scanner scanner;    private void prem(Vector<Character> source, Vector<Character> result) {        if (source.size() == 0) {            for (int i = 0; i < result.size(); i++) {                System.out.print(result.elementAt(i));            }            System.out.println();            total++;            return;        }        for (int i = 0; i < source.size(); i++) {            Vector<Character> tsource = new Vector<Character>(source);            Vector<Character> tresult = new Vector<Character>(result);            tresult.add(tsource.elementAt(i));            tsource.remove(i);            new Question1().prem(tsource, tresult);        }    }    public static void main(String[] args) {        scanner = new Scanner(System.in);        int n = scanner.nextInt();        Vector<Character> source = new Vector<Character>();        Vector<Character> result = new Vector<Character>();        for (int i = 0; i < n; i++) {            source.add((char) ('A' + i));        }        new Question1().prem(source, result);        System.out.println(total);    }}

运行结果

3ABCACBBACBCACABCBA6
0 0