排列组合算法总结(含Java实现)
来源:互联网 发布:淘宝虚假广告怎么投诉 编辑:程序博客网 时间:2024/06/02 04:01
一. 排列组合
1. 排列
(1)排列:从n个元素中排列m个元素。
(2)全排列:把n个元素全部排列。
2. 组合
组合:从n个元素中选择m个元素(不考虑顺序)。
二.排列相关算法总结
1.全排列
题目一:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
解题思路:
1.把字符串分成两部分,一部分是字符串的第一个字符,另一部分是第一个字符以后的所有字符。递归求另一部分字符的排列。
2.拿第一个字符和它后面的字符逐个交换。注:交换完还要换回去
java实现如下:
import java.util.ArrayList;import java.util.HashSet;import java.util.Collections;public class Solution { public ArrayList<String> Permutation(String str) { ArrayList<String> res = new ArrayList<String>(); if(str == null || str.length() <= 0) return res; HashSet<String> set = new HashSet<String>(); //结果去重 dfs(set, str.toCharArray(), 0); res.addAll(set); Collections.sort(res); return res; } public void dfs(HashSet<String> set, char [] str, int k){ if(k == str.length){ //得到结果 set.add(new String(str)); return ; } for(int i = 0; i < str.length; i ++){ swap(i, k, str); dfs(set, str, k + 1); swap(i, k, str); //回溯 } } public void swap(int i, int j, char [] str){ if(i != j){ char temp = str[i]; str[i] = str[j]; str[j] = temp; } }}
阅读全文
0 0
- 排列组合算法总结(含Java实现)
- 排列组合算法总结(含Java实现)
- Java实现排列组合算法
- 高效率的排列组合算法(java实现)
- 排列组合算法(Java)
- 【转】JAVA实现排列组合算法
- java排列组合算法代码实现
- java排列组合算法代码实现
- java 高效率的排列组合算法(java实现)
- 容易理解的快速排序算法及其相关算法的总结(含java实现方法)
- java 排列组合(递归实现)
- C#实现排列组合算法
- 排列组合算法实现
- java实现排列组合实现
- java排列组合算法(n选n)
- java算法-省赛来了(排列组合)
- java排列组合算法(M选N)
- Java排列组合算法
- Emmet 学习笔记
- nodejs+express+mysql 增删改查
- 前端性能优化(DOM操作篇)
- 记录一下我的Android项目里的基类的的基本设计
- leetcode刷题记录:Longest Common Prefix
- 排列组合算法总结(含Java实现)
- 字符流中第一个不重复的字符(java版)
- 排列组合算法总结(含Java实现)
- js中的prototype的解析
- 微信小程序位置API
- Library auk_dspip_lib not found问题解决
- 基于canvas的图像大小处理
- python当中subprocess里call与Popen的用法区别
- 119. Pascal's Triangle II