求出部分有序数组中的最大子数组(第一次出现)的长度及位置 (c++实现)
来源:互联网 发布:淘宝生活服务类目推广 编辑:程序博客网 时间:2024/05/22 15:21
在复习数据结构是,看到书中有这么一个题目:
求出部分有序数组中的最大子数组(第一次出现)的长度及位置
然后就简单的实现了下,难免有疏漏之处,还望见谅和指出,在此谢过
在CodeBlocks中编译通过,下面贴出代码:
//找出部分有序的数组中连续有序最长的子数组#include <iostream>using namespace std;void lenth(int a[], int n, int *max_len, int *pos){ *max_len = 0; //保存最大子数组的长度,并返回 *pos = 0; //保存最大子数组的第一个元素出现的位置 int i=0, j=0, len=0; for(i=0; i<n-1; i++) { if(a[i] < a[i+1]) { ++len; if(*max_len < len) { *max_len = len; *pos = i; } } else //一旦出现逆序的,len置0 { len = 0; } } *max_len = *max_len + 1; // +1 是因为上面是a[i] < a[i+1] *pos = *pos - *max_len + 2; //+2 是因为*pos开始保存的是最大子数组的最后元素的位置}int main(){ int a[] = {2,5,6,1,3,8,9}; int n = sizeof(a)/sizeof(a[0]); int max_len, pos; lenth(a, n, &max_len, &pos); cout << max_len <<" " << pos << endl; return 0;}
0 0
- 求出部分有序数组中的最大子数组(第一次出现)的长度及位置 (c++实现)
- C语言实现求数组的子数组之和的最大值并求出最大子数组位置
- 找出数组中的最大有序子数组
- 求出int数组中和最大的子序列
- C 数组最大长度
- 最大子数组问题及C语言实现
- 求出长度为1, 2, 3, 4, 5....的字符串最大出现次数 后缀数组 UVA 11855 - Buzzwords
- java二分法实现在有序的数组中定位某数在数组中的位置
- 求两个数组的公共子数组的最大长度
- 删除有序数组中的重复元素,返回数组的新长度,但允许最大重复次数为2
- 求出有序数组旋转后的最小值
- 最大和子数组 && 最大有序子数组
- java实现连续子数组的最大和(子向量的长度至少是1)
- c语言实现在一个数组中求出最大数所在的下标
- 查找有序数组中某个数首次出现的位置
- 数组中连续子序列的最大和及子串(js实现)
- C/C++代码实现最大子数组
- [C++]Implement strStr() 找到子字符串第一次出现的位置
- android位置传感器
- ACM学习感悟——HDU5092(dp)
- PHP设计模式——适配器模式
- JSP:setPropery ()、getProperty(){两个页面}
- Ubuntu14.04下搭建可远程访问的Mysql服务器
- 求出部分有序数组中的最大子数组(第一次出现)的长度及位置 (c++实现)
- 【字符串】字符串包含问题的最优解
- hdu1575 Tr A 矩阵快速幂
- SGU - 106 - The equation (扩展欧几里得)
- Linux内核分析课程8_进程调度与进程切换过程
- 什么是servlet上下文
- CI框架源码完全分析之入口文件index.php
- 推荐OPENCV的源代码资料以及相关链接
- leetcode Majority Element