zoukankan      html  css  js  c++  java
  • 穷举所有排列情况算法实现

    现实问题:测试多个参数不同的组合情况对结果的影响

    算法示例:

    输入: A,B,C,D

    输出:

    A

    A,B

    A,B,C

    A,B,C,D

    A,C

    A,C,D

    A,D

    B

    B,C

    B,C,D

    B,D

    C

    C,D

    D

    算法实现逻辑:

    对于每个元素来说,所做的工作就是要找到该元素能够组合的情况,所以这里直接递归寻找每个元素的组合。

    由于这里不需要加上排列条件,按顺序从前往后找就不会有重复的情况了。

    代码:

    static void Main(string[] args)
    {
      var xcolnames = new List < string > { "A", "B", "C", "D"};
      var paramGroup = new List<string>();
      for (var i = 0; i < xcolnames.Count; i++) {
        paramGroup.Add(xcolnames[i]);
        Console.WriteLine(xcolnames[i]);
        FindPartner(i, new List<string>(), xcolnames, ref paramGroup);
      }
    }
    private static void FindPartner(int self, List<string> head, List<string> data, ref List<string> result)
    {
      for (var i = self + 1; i < data.Count; i++) {
        //找到就加入并输出
        var cresult = new List<string>(head.ToArray());
        cresult.Add(data[self]);
        cresult.Add(data[i]);
    
        result.Add(string.Join("+", cresult));
        Console.WriteLine(string.Join("+", cresult));
    
        //克隆之前的搭档
        var headclone = new List<string>(head.ToArray());
        headclone.Add(data[self]);
        FindPartner(i, headclone, data, ref result);
      }
    }
    

      

  • 相关阅读:
    Excel相关函数
    慢SQL优化
    idea 添加阿里代码检查插件
    Jmeter使用自定义编写代码
    七、一些困难的测试场景:多线程、持久化存储等
    六、测试驱动开发 TDD
    五、从宏观角度考虑单元测试
    四、使用Mock对象
    三、单元测试要测试的是什么? The Right-BICP
    二、优秀单元测试的五个特征FIRST
  • 原文地址:https://www.cnblogs.com/lycnblogs/p/9111565.html
Copyright © 2011-2022 走看看