给定一个元素都大于零的整数集合,编写函数,计算出如下条件的一个最大子集
这个就是原题,没说传入什么参数,感觉应该是数组,
最好使用java
你这是没思路还是怎么滴?不是很明白你的情况
private static int[] getNums() {
//测试数据,不重复,大于零就行
int[] nums = {2,4,6,8,3,9,12,27,81};
return nums;
}
public static void main(String[] args) {
//生成一组大于0,不重复的整数
int[] nums = getNums();
//从小到大 排序
Arrays.sort(nums);
//查看排序结果
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i]+",");
}
System.out.println();
//记录符合要求的最大元素数量
int maxCount = 0;
//记录符合要求的原素索引
List<Integer> indexList = null;
int tmpCount = 0;
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
int tmp = nums[i];
List<Integer> tmpIndexList = new ArrayList<>();
if(nums[j] % tmp == 0){
tmp = nums[j];
tmpCount = 2;
tmpIndexList.add(i);
tmpIndexList.add(j);
for (int j2 = j + 1; j2 < nums.length; j2++) {
if(nums[j2] % tmp == 0){
tmp = nums[j2];
tmpCount++;
tmpIndexList.add(j2);
}
}
}
if(tmpCount > maxCount){
maxCount = tmpCount;
indexList = tmpIndexList;
}
}
}
System.out.println("maxCount: " + maxCount);
for (int i = 0; i < indexList.size(); i++) {
System.out.print(nums[indexList.get(i)]+",");
}
}