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);
    }
    }

  • 相关阅读:
    .net从后台返回js的提示框
    使用IntelliTrace的独立收集器帮助测试应用程序
    NuGet笔记
    使用.dmp+vs分析异常
    windbg笔记
    C# 删除文件、文件到到回收站及异常判断
    .Net利用反射调用DLL时,被调用DLL引用其它库问题
    C#中设置窗口圆角样式
    C# 中引用IHTMLDocument2
    c# 单实例运行
  • 原文地址:https://www.cnblogs.com/plas/p/9893350.html
Copyright © 2011-2022 走看看