标准的排序组合-算法

题目

有若干个字母,要求计算出长度为4的所有可能得组合

解题

排序组合最适用的就是回溯了,建议大家本地debug一层一层的看能好理解点

复制代码
private static void getResult(List<String> source, Stack<String> temp, int curLength, int maxLength, List<Stack<String>> result) {
    if (curLength == maxLength) {
      result.add((Stack<String>) temp.clone());
      return;
    }
    for (int i = 0; i < source.size(); i++) {
      if (temp.contains(source.get(i))) {
        continue;
      }
      temp.push(source.get(i));
      getResult(source, temp, curLength + 1, maxLength, result);
      temp.pop();
    }
  }

回溯之所以叫回溯,就是因为他是从尾巴的地方先遍历所有的可能性,然后再往上一层,当然了上一层遍历时还需要再往下一层检查所有的可能性

相关推荐
qq_1481153711 分钟前
C++网络编程(Boost.Asio)
开发语言·c++·算法
2301_8042154116 分钟前
内存映射文件高级用法
开发语言·c++·算法
爱喝白开水a32 分钟前
春节后普通程序员如何“丝滑”跨行AI:不啃算法,也能拿走AI
java·人工智能·算法·spring·ai·前端框架·大模型
张辰宇-1 小时前
AcWing 5 多重背包问题 II
算法
小则又沐风a1 小时前
类和对象(C++)---上
java·c++·算法
季明洵1 小时前
动态规划及背包问题
java·数据结构·算法·动态规划·背包问题
busideyang1 小时前
函数指针类型定义笔记
c语言·笔记·stm32·单片机·算法·嵌入式
Wect1 小时前
LeetCode 215. 数组中的第K个最大元素:大根堆解法详解
前端·算法·typescript
深邃-1 小时前
数据结构-双向链表
c语言·开发语言·数据结构·c++·算法·链表·html5
2401_878530211 小时前
分布式任务调度系统
开发语言·c++·算法