连续正整数集合子集的java算法
来源:互联网 发布:react native和node.js 编辑:程序博客网 时间:2024/05/29 03:14
觉得这题有点意思,刚在qq空间发过,不过应该没什么人看,这里再发一次吧。
题目内容:一个连续的正整数子集,比如输入5代表{1,2,3,4,5},求其所有子集。
源自csdn上一哥们的提问,乍一看还是难下手的,说说我这里想到的方法。
比如1的时候只有{1}这个子集,2则有{1,2};{1};{2} 3的时候则有{1,2,3};{1,2};{1,3};{2,3};{1};{2};{3}
好像没有什么规律,仔细看其实还是有的。
2的情况是 1的每个子集再加上一个2构成的新集合这里是{1,2}加上1原来自己的子集{1}加上{2}这个集合。当然,3跟2的情况就一样了
撒,所以想到了用递归撒。
遇到的问题是list之间的拷贝,不能直接赋值滴,赋值之后传的是引用,任意一个list改变会引起另一个list变化,所以对于保存未改变之前的集合就做不到啦,所以找了个copy方法。
当然,这题可以拓展,稍微改动完全可以升级针对所有集合求子集的问题。有兴趣可以试试哟。
源自csdn上一哥们的提问,乍一看还是难下手的,说说我这里想到的方法。
比如1的时候只有{1}这个子集,2则有{1,2};{1};{2} 3的时候则有{1,2,3};{1,2};{1,3};{2,3};{1};{2};{3}
好像没有什么规律,仔细看其实还是有的。
2的情况是 1的每个子集再加上一个2构成的新集合这里是{1,2}加上1原来自己的子集{1}加上{2}这个集合。当然,3跟2的情况就一样了
撒,所以想到了用递归撒。
遇到的问题是list之间的拷贝,不能直接赋值滴,赋值之后传的是引用,任意一个list改变会引起另一个list变化,所以对于保存未改变之前的集合就做不到啦,所以找了个copy方法。
当然,这题可以拓展,稍微改动完全可以升级针对所有集合求子集的问题。有兴趣可以试试哟。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class MyEcoding {
public static void main(String[] args) {System.out.println("输入大于1的正整数");
Scanner input = new Scanner(System.in);
int m = input.nextInt();
List<List<Integer>> list1 = new ArrayList<List<Integer>>();
List<Integer> list1_1 = new ArrayList<Integer>();
list1_1.add(1);
list1.add(list1_1);
for (int i = 1; i < m; i++) {
List<List<Integer>> list2 = new ArrayList<List<Integer>>();
copy(list1,list2);
for (int j = 0; j < list1.size(); j++) {
list1.get(j).add(i+1);
}
list1.addAll(list2);
List<Integer> list1_2 = new ArrayList<Integer>();
list1_2.add(i+1);
list1.add(list1_2);
}
System.out.println(list1);
}
public static void copy(List src,List dest){
for (int i = 0 ;i < src.size() ; i++) {
Object obj = src.get(i);
if (obj instanceof List){
dest.add(new ArrayList());
copy((List)obj,(List)((List)dest).get(i));
}else{
dest.add(obj);
}
}
}
}
0 0
- 连续正整数集合子集的java算法
- 集合子集的一个Java算法
- java求集合的子集算法
- 求集合子集的算法
- java求解 集合的子集
- [算法]连续正整数和的问题
- 蓝桥杯算法训练 连续正整数的和
- 算法训练 连续正整数的和
- 算法训练 连续正整数的和
- 蓝桥杯 算法训练 连续正整数的和
- 算法训练 连续正整数的和
- 蓝桥杯 算法训练 连续正整数的和
- 算法训练 连续正整数的和
- 求集合的所有子集的算法
- 求集合的所有子集的算法
- 集合的所有子集的算法
- 输出集合所有子集的算法
- 输出集合所有子集的算法
- web.xml配置
- Basic Calculator
- http header
- 八大排序算法
- 从rich edit里每行的读取,可读中文内容
- 连续正整数集合子集的java算法
- IOS 传感器 知识点 介绍
- 解决多点透视问题
- 集合类操作优化经验总结
- Snail—UI学习之工具栏UIToolBar
- iOS推送
- 实现边框透明,安卓手机头像圆形不识别%;利用样式实现”>“符号,以及tips符号的实现方法,以及粘性定位position:sticky用法
- POJ-1222 EXTENDED LIGHTS OUT(高斯消元)
- linux 每天一条Linux 重要!!!!