给定长度为n的整数数列:a0,a1,..,an-1,以及整数S。这个数列会有连续的子序列的整数总和大于S的,求这些数列中,最小的长度。
2013-09-21 19:09
881 查看
给定长度为n的整数数列:a0,a1,..,an-1,以及整数S。这个数列会有连续的子序列的整数总和大于S的,求这些数列中,最小的长度。
#include <iostream> using namespace std; int min_seri_len(int *a, int n, int S){ int i = 0; int j = 0; int min_len = 0; int * sum = new int[n+1]; sum[0] = 0; for(i =1; i < n+1; i++){ sum[i] = sum[i -1] + a[i-1]; } i = 0; j = 0; min_len = n; while(i < n+1 & j< n+1){ while((sum[j] - sum[i])<= S) { j++; } while((i < j) && ((sum[j]- sum[i]) > S)){ i++; } if ((i == j) && (sum[j] > S)) return 1; if (min_len > (j - i +1)) min_len = j - i +1; } delete [] sum; return min_len; } int main() { int a[10] = {5,1,3,5,10,7,4,9,2,8}; int S = 10; int min_len = 0; min_len = min_seri_len(a, 10 ,S); cout<<min_len<<endl; system("pause()"); return 0; }
相关文章推荐
- 给定一个递增序列,a1 <a2 <...<an 。定义这个序列的最大间隔为d=max{ai+1 - ai }(1≤i<n),现在要从a2 ,a3 ..an-1 中删除一个元素。问剩余序列的最大间隔最小是多少?
- zoj 3512 Financial Fraud 给定一个整数序列a1, a2, … , an,求一个不下降序列b1 ≤ b2 ≤ … ≤ bn,使得数列{ai}和{bi}的各项之差的绝对值之和 |
- 给定一个固定长度的数组,将递增整数序列写入这个数组。当写到数组尾部时,返回数组开始重新写,并覆盖先前写过的数,请在这个特殊数组中找出给定的整数
- 程序员面试金典——解题总结: 9.17中等难题 17.8给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和
- [ACM_其他] 总和不小于S的连续子序列的长度的最小值——尺缩法
- 一道题:给定一整数序列A1,A2,...,An(可能有负数),求A1到An的一个自序列,使得Ai到Aj的和最大。例如:整数序列-2,11,-4,13,-5,2,-5,-3,12,-9的最大子序列为21
- 最大子序列问题:给定一整数序列A1,A2,A3...An(可能有负数),求A1~An的一个最大子序列Ai~Aj的和。
- 数据结构与算法——给定整数A1,A2,....An,....(可能有负数),求该数据序列的最大子序列的和
- 给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和。
- 华为机试题:输入一组大于等于0的整数,从小到大排序输出,输出有连续数时,只输出连续数的最小和最大值
- 任意整数 ,输出从大到小,连续的去最大最小。 最大长度不超过1024;
- 给定整数序列求连续子串最大和 - 滴滴出行2018校园招聘内推笔试-研发工程师
- 华为机试题:输入一组大于等于0的整数,从小到大排序输出,输出有连续数时,只输出连续数的最小和最大值
- 输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数.输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,
- 给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。
- 一个无序整数数组中找到最长连续序列(Longest Consecutive Sequence)和两个元素使得相差最小
- 给定一个整数序列,请找出这个整数序列的中间数的值。
- Problem Description 输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。 Input 输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。 Output 对于每组
- 输入a1,a2,...,an,b1,b2,...,bn, 将这个序列顺序改为a1,b1,a2,b2,a3,b3,...,an,bn
- 设一个长度为10的整型数组, 0)要求每个元素的值通过scanf输入,输入完成后, 1)请顺序输出这些整数, 2)请倒序输出这些整数, 3)输出这些数中的最大值, 4)输出这些数中的最小值