算法【最大子序列问题】
时间:2022-07-25
本文章向大家介绍算法【最大子序列问题】,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
问题描述:
(这个问题描述可能不太准确 是根据我个人的理解写出来的)
输入一个序列的数字 求他的最大子序列 包括空集合
例如说 1 , 2 ,3
那么他的子序列就是 【 [1,2,3] [1,2] [1,3] [2,3] [ 1 ] [2 ] [3] [] 】
我的解决思路是通过递归调用
1. 每个元素有两种状态,一种状态是取当前元素,一种状态是不取当前元素 所以需要 一个单独的辅助数组 用来记录当前元素是否取
取完所有取当前元素的子情况,就获取所有不取当前元素的子情况
2. 需要一个索引记录 当前循环到的层数,如果获取完所有元素就添加到List中
代码:
import java.util.ArrayList;
import java.util.List;
public class Solution {
public static boolean v[] = new boolean[100];
public static List<List<Integer>> ans = new ArrayList<List<Integer>>();
public void robot(int idx, int[] nums) {
if (idx >= nums.length) {
List<Integer> r = new ArrayList<Integer>();
for (int i = 0; i < nums.length;i++) {
if (v[i]) {
r.add(nums[i]);
}
}
ans.add(r);
return;
}
//这个是取当前元素的所有结果
v[idx] = true;
robot(idx+1,nums);
//这个是不取当前元素的所有结果
v[idx] = false;
robot(idx+1,nums);
}
public List<List<Integer>> subsets(int [] nums)
{
ans.clear();
robot(0, nums);
return ans;
}
public static void main(String[] args) {
for (int i = 0; i < v.length; i++) {
v[i] = false;
}
int [] nums = new int [3];
nums[0] = 1;
nums[1] = 2;
nums[2] = 3;
Solution solution = new Solution();
List<List<Integer>> list = solution.subsets(nums);
System.out.println(list);
}
}
- 如何用卷积神经网络从歌曲中提取纯人声?这里有教程+代码
- 排序算法对比、总结(Python代码)
- 记一道未能答出的算法面试题
- 关于numpy mean函数的axis参数
- 在Keras+TF环境中,用迁移学习和微调做专属图像识别系统
- Tensorflow的LRN是怎么做的
- 存储Tensorflow训练网络的参数
- 用Ansible部署ELK STACK
- 十六个有用的Linux命令行技巧
- keras系列︱深度学习五款常用的已训练模型
- 基于VGG19的识别中国人、韩国人、日本人分类器
- 机器学习算法GBDT的面试要点总结
- 了解、接受和利用Java中的Optional (类)
- 一个强化学习 Q-learning 算法的简明教程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 基础知识 | R语言绘图保存的pdf图片无法显示中文怎么办?
- 基础知识 | R语言绘图基础之柱形图
- 高维数据 | R语言绘图基础之主成分分析
- 高维数据 |R语言数据可视化之t-SNE
- 基础知识 | R语言数据分析之控制流
- 基础知识 | R语言数据处理之日期值的转换
- 云开发 CloudBase CMS 内容管理系统正式开源啦!
- 高维数据 | R语言数据可视化之热力图
- 高维数据 | R语言数据可视化之日历图
- 打卡群刷题总结0804——二叉树的中序遍历
- 基础知识 | R语言数据管理之SQL语句
- 文本挖掘| 某作者文章的词频统计排序
- spring注解配置之@Configuration
- TS核心知识点总结及项目实战案例分析
- 用Python开发 写个消消乐小游戏