Java实现数组元素的排列组合
来源:互联网 发布:华中科技大学软件下载 编辑:程序博客网 时间:2024/05/21 17:31
组合
组合是非递归实现的(有Bug,没有输出所以的组合)
package D919;import java.util.ArrayList;import java.util.List;public class Combine { public static List<List<Integer>> sub(int[] a) { int n = a.length; List<List<Integer>> result = new ArrayList<List<Integer>>(); for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { List<Integer> list = new ArrayList<>(); for (int k = i; k <=j; k++) { list.add(a[k]); } result.add(list); } } return result; } public static void main(String[] args) { int[] a = {1, -2, 4, 8, -4, 7, -1, -5}; System.out.println(sub(a)); }}
递归实现
package D920;import java.util.ArrayList;import java.util.List;public class Combine { static List<String> list = new ArrayList<>(); public static void sub(String s) { char[] chars = s.toCharArray(); StringBuffer sb = new StringBuffer(""); for (int i = 1; i <= chars.length; i++) { sub(chars, 0, i, sb); } } private static void sub(char[] c, int begin, int len, StringBuffer sb) { if (len == 0) { list.add(String.valueOf(sb)); return; } if (begin == c.length) { return; } sb.append(c[begin]); sub(c, begin + 1, len - 1, sb); sb.deleteCharAt(sb.length() - 1); sub(c, begin + 1, len, sb); } public static void main(String[] args) { String s = "abc"; sub(s); System.out.println(list); }}
排列
排列是递归实现的
package D919;public class Permute { public void permutation(int[] a, int length, int index) { if (index == length) { for (int i = 0; i < length; i++) { System.out.print(a[i] + " "); } System.out.println(); } else { for (int i = index; i < length; i++) { if (isSwap(a, length, i)) { swap(a, index, i); permutation(a, length, index + 1); swap(a, index, i); } } } } private boolean isSwap(int[] a, int length, int index) { for (int i = index + 1; i < length; i++) { if (a[index] == a[i]) { return false; } } return true; } private void swap(int[] a, int index, int i) { int temp = a[index]; a[index] = a[i]; a[i] = temp; } public static void main(String[] args) { int[] b = {1, 2, 3}; new permute().permutation(b, b.length, 0); }}
阅读全文
0 0
- Java实现数组元素的排列组合
- 回溯实现数组元素的排列组合
- 用java实现对数组的排列组合
- 关于数组元素的排列组合
- 多个数组间元素排列组合问题求解(Java实现) 标签: 递归排列组合循环
- 求一个数组元素的所有排列组合
- 【求一个数组元素的所有排列组合】
- 多个数组间元素排列组合问题求解(Java实现)
- 【JS】用js实现二维数组里面的元素排列组合一个小demo
- 排列组合数列的java实现
- 输出数组的所有元素的排列组合(递归)
- [leetcode 46] Permutations------数组中元素的所有排列组合集合
- JAVA 多个数组之间的排列组合
- java数组排列组合
- java实现排列组合实现
- 高效率的排列组合算法(java实现)
- java 递归 实现数字的排列组合
- JAVA实现abc字符串的排列组合
- python检测文件的MD5值
- 异地恋的我们
- 前端性能优化----yahoo前端性能团队总结的35条黄金定律
- Redis源码阅读笔记--六大数据结构和五大对象
- Mysql查询结果顺序按 in() 中ID 的顺序排列
- Java实现数组元素的排列组合
- JMS系列之 (一)基本知识
- android-仿手机通讯录(支持索引导航和搜索功能)
- java初识
- HTML学习之路06-表单标签
- CSS+DIV网页样式与布局从入门到精通
- iOS开发——音频播放 (三):AudioFileStream
- ACM数论之旅6---数论倒数,又称逆元(我整个人都倒了( ̄﹏ ̄))
- CCF—工资计算 20161202