最小正子序列和
来源:互联网 发布:男士刷酸 知乎 编辑:程序博客网 时间:2024/04/28 05:56
#include<stdio.h>//求最小正子序列和//最小正子序列和:1、连续子序列,2、序列和为正且最小 //思路:求出开始的一组子序列:{-2},{-2,11},//{-2,11,-4}, {-2,11,-4,13},{-2,11,-4,13,-5},{-2,11,-4,13,-5,-2} //剩下的子序列必然可以通过上面的这一组子序列相减获得//所以要获得最小正子序列各,必然将上面的序列和排序后的相邻序列和相减所得 //其他方法:究举所有子序列,与最大子序和方法相同, //要记录秩typedef struct node{int value;int rank;}nodes; //快排int quickSort(nodes a[],int low,int high){//int low=0,high=len-1;nodes pivotkey=a[low];while(low<high){while(low<high&&a[high].value>=pivotkey.value) --high;a[low]=a[high];while(low<high&&a[low].value<=pivotkey.value) ++low;a[high]=a[low];} a[low]=pivotkey;return low;} //快排的递归void Qsort(nodes a[],int low,int high){if(low<high){int temp=quickSort(a,low,high);Qsort(a,low,temp);Qsort(a,temp+1,high); }} void getMin(int a[],int len){nodes b[len];//Item *tmp = new Item[len]; int sum=0;for(int i=0;i<len;i++){//b[i]=(nodes)malloc(sizeof(node));sum+=a[i];b[i].value=sum;b[i].rank=i;}//将其排序 O(nlogn) Qsort(b,0,len-1);for(int i=0;i<len;i++){printf("%d rank为%d ",b[i].value,b[i].rank);}printf("\n");int min=b[0].value>=0?b[0].value:b[len-1].value;for(int i=1;i<len;i++){//必须得够减 if(b[i].rank>b[i-1].rank){int temp=b[i].value-b[i-1].value;if(temp>0&&temp<min){min=temp;}}} printf("最小正序列和为:%d",min);} int main(){int test[]={-2,11,-4,13,-5,-2};getMin(test,sizeof(test)/sizeof(int)); }
0 0
- 最小正子序列和
- 最小最序列和以及最小正子序列
- 求最小子序列和 求最小的正序列 求最大子序列乘积
- 最小正序列和
- 看了一些求最小正子序列和的解法
- java 最小子序列和
- 连续最大子序列和与最小子序列和
- 求最小正序列的和java实现
- 求最小正序列的和java实现
- 最小子序列和 单向DP
- 【SDUT】[2146]最小子序列和
- 【SDUT [2146]最小子序列和】
- 连续最小子序列
- erlang 小程序:整数序列,搜索和为正的最长子序列
- hdu 4223 Dynamic Programming?(最小连续子序列绝对值和)
- 最长匹配子序列 和 删除次数最小形成回文
- 最小子序列--分治算法
- 最小上升子序列1
- nginx基础概念-pipeline
- Android数据库ORMlite框架翻译系列(第二章:part 1)
- 第七课 画图板 lesson 04 第四版 (优化代码:监听类)
- (8.1.1.1)网站性能测试:pylot的参数
- IOS 文件操作类库
- 最小正子序列和
- 数字视频监控系统开发及应用
- 学习笔记-【全文检索引擎Sphinx】
- nginx基础概念-lingering_close
- P51 第3题 编写一个程序从键盘输入10个数,要求出其中最小的
- Java类文件结构笔记
- 自我的恐惧
- 黑马程序员——JAVA学习笔记——Jdk5.0新特性
- Ubuntu标签式窗口两个有用的快捷键