zoukankan      html  css  js  c++  java
  • 求n个数的排列

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

    public class Test6 {

    //设置总数
    private static int count =0;
    public static void main(String[] args) {

    //获取
    Scanner s = new Scanner(System.in);
    int n = s.nextInt();
    Vector<Character> sources = new Vector<Character>();
    Vector<Character> results = new Vector<Character>();
    //将获取的数据放入栈
    for (int i = 0; i <n; i++) {
    sources.add((char) ('A'+i));
    }
    //调用自定义方法,计算总数和输出结果
    count(sources, results);

    //输出符合排列的总数
    System.out.println(count);
    }
    public static void count(Vector<Character> v1,Vector<Character> v2){

    //如果v1的长度为0就输出结果因为数据已经全部取出
    if(v1.size()==0){
    for (int i = 0; i < v2.size(); i++) {
    System.out.print(v2.elementAt(i));
    }
    System.out.print(" ");
    count++;
    return;
    }
    for (int i = 0; i < v1.size(); i++) {
    //设置两个缓存栈,用于回调函数是作为参数
    Vector<Character>tsourse=new Vector<Character>(v1);
    Vector<Character>tresult=new Vector<Character>(v2);
    //将剩余的数依次添加进矢量中
    tresult.add(v1.elementAt(i));

    //并移除队列中的当前元素
    tsourse.remove(i);

    //回调函数
    count(tsourse, tresult);
    }
    }
    }

    注:主要考察的是递归

    如果需要输出的是含重复的数据是可以改为

    public static void count(Vector<Character> v1,Vector<Character> v2){
    if(v2.size()==v1.size()){
    for (int i = 0; i < v2.size(); i++) {
    System.out.print(v2.elementAt(i));
    }
    System.out.print(" ");
    count++;
    return;
    }
     for (int i = 0; i < v1.size(); i++) {
    //设置两个缓存栈
    Vector<Character>tsourse=new Vector<Character>(v1);
    Vector<Character>tresult=new Vector<Character>(v2);
    //当
    System.out.println(i);
    tresult.add(v1.elementAt(i));
    //tsourse.remove(i);
    count(tsourse, tresult);
    }
    }

  • 相关阅读:
    LOJ 2553 「CTSC2018」暴力写挂——边分治+虚树
    hdu 1028 & hdu 1398 —— 整数划分(生成函数)
    bzoj 4827 [Hnoi2017] 礼物 —— FFT
    bzoj 4503 两个串 —— FFT
    bzoj 3527 [Zjoi2014] 力 —— FFT
    bzoj 3160 万径人踪灭 —— FFT
    bzoj 2194 快速傅立叶之二 —— FFT
    bzoj 2179 FFT快速傅立叶 —— FFT
    洛谷 P3803 多项式乘法(FFT) —— FFT
    CF 1009 F Dominant Indices —— 长链剖分+指针
  • 原文地址:https://www.cnblogs.com/plas/p/9893350.html
Copyright © 2011-2022 走看看