最小正子串问题

来源:互联网 发布:h网络是什么意思 编辑:程序博客网 时间:2024/06/06 02:46

最小正序列是这样的一个序列:

1.其序列和大于0

2.在所有序列和大于0的子序列中,其和最小。


1


c++实现:

typedef struct Node{int val;int index;}SumSubarray;bool cmp( const SumSubarray & a, const SumSubarray & b )  {      return a.val < b.val;  }  int FindMinPositiveSubarray( int A[], int len ){int sum = 0;int ans;SumSubarray sum_subarray[MAX_N];SumSubarray * sum_substr = sum_subarray;for ( int i = 0; i < n; i++ ){sum += A[i];sum_subarray[i]->val = sum;sum_subarray[i]->index = i;}AdsSort(sum_substr, sum_substr + 10, cmp ); // 按val升序排列ans = sum_subarray[0]->val > 0 ? sum_subarray[0]->val : INT_MAX;for ( int j = 1; j < n; ++j ){if ( sum_subarray[i].val - sum_subarray[i - 1].val < result&& sum_subarray[i - 1].index > sum_subarray[i].index && sum_subarray[i].val - sum_subarray[i - 1].val > 0 )result = sum_subarray[i].val - sum_subarray[i - 1].val;}return result;}

算法复杂度:O( Nlog N )



0 0
原创粉丝点击