编程之美 求数组中的最长递增子序列
来源:互联网 发布:c语言 项目开发实例 编辑:程序博客网 时间:2024/05/17 04:45
如题,例如:存在数组 1,-1,2,-3,4,-5,6,-7 ,则最长的递增子序列是:1,2,4,6.
法一:
蛮力法
- int Lis(int* arr,int n)
- {
- int iCount=0;//记录子序列的个数
- int tmp_count=0;
- int tmp;
- for(int i=0;i<n-1;i++)
- {
- tmp=arr[i];
- for(int j=i+1;j<n-1;j++)
- {
- if(arr[j]>tmp)
- {
- iCount++;
- tmp=arr[j];
- }
- }
- if(iCount>tmp_count)
- {
- tmp_count=iCount;
- }
- iCount=0;
- }
- return tmp_count+1;
- }
复杂度为O(N^2);
利用DP来做,最有问题,一般都用dp来做,关键是找到递归公式。
用LIS[i]记录位置i处,最长的递增子序列,编程之美上的解法,真心看不懂,记录下来,以后再看:
- int LIS(int[] array)
- {
- int[] LIS=new int[array.Length];
- for (int i = 0; i < array.Length; i++)
- {
- LIS[i] = 1;
- for (int j = 0; j < i; j++)
- {
- if (array[i] > array[j] && LIS[j] + 1 > LIS[i])
- LIS[i] = LIS[j] + 1;
- }
- }
- }
- return Max(LIS);
- }
- 编程之美 求数组中的最长递增子序列
- [编程之美]求数组中最长递增子序列
- 编程之美--求数组中最长递增子序列
- 编程之美--求数组中最长递增子序列
- 读书笔记之编程之美 - 2.16 求数组中最长递增子序列
- 编程之美读书笔记之2.16求数组中最长递增子序列
- 编程之美: 第二章 数字之魅 2.16求数组中最长递增子序列
- 编程之美读书笔记_2.16 求数组中最长递增子序列
- 《编程之美》读书笔记17: 2.16 求数组中最长递增子序列
- 编程之美2.16 求数组中最长递增子序列
- 编程之美2.16——求数组中最长递增子序列
- 编程之美2.16求数组中最长递增子序列
- 编程之美_012求数组中最长递增子序列
- 求数组中最长递增子序列—动态规划入门(编程之美)
- POJ 2533 Longest Ordered Subsequence 编程之美 2.16 求数组中最长递增子序列
- 编程之美---求数组中最长递增子序列LIS
- 编程之美 2.16 求数组中最长递增子序列
- 【编程之美】2.16 求数组中最长递增子序列
- 学生信息管理系统(一)
- 如果这点困难都克服不了,我们什么也就不必想不必做了
- 日积月累--小技巧之二
- iOS SDK:那些关于iOS调试的技巧
- SQL Server中语句的自动参数化
- 编程之美 求数组中的最长递增子序列
- Hadoop安装记录及测试
- 排序算法--选择排序
- android Dalvik虚拟机工作原理介绍
- 买电脑经验总结
- 都是360捣的鬼
- ios 随机数
- 【创业版】《漫漫邮子路(二)--睿泰集团总裁的求学与创业:艾顺刚》
- 如何将windows下的文件夹挂载到linux虚拟机下