求一个向量的任何连续最接近0的子向量的和
来源:互联网 发布:突然蹦出鬼吓人软件 编辑:程序博客网 时间:2024/05/09 04:41
//求一个向量的任何连续最接近0的子向量的和
/*
比如向量(31,-41,59,26,-53,58,97,-93,-23,84);
最大和是从97到-93即为4
*/
#include<stdio.h>
#include<math.h>
//返回最接近0的数
int closeZero( int x, int y );
//最原始的算法,复杂度为T(n)=O(n*n)
int oringinal( int v[], int len );
void main()
{
int i = 0;
int v[] = {31,-41,59,26,-53,58,97,-93,-23,84};
int len = 0;
int result;
len = sizeof(v) / sizeof(int);
printf("oringinal datas:\n");
for( i = 0; i < len; i++ )
{
printf("%d\t",v[i]);
}
printf("\n");
//最原始的算法
result = oringinal(v,len);
printf("oringinal(v,len):%d\n",result);
}
//返回最接近0的数
int closeZero( int x, int y )
{
if( abs(x) > abs(y) )
{
x = y;
}
return x;
}
//最原始的算法,复杂度为T(n)=O(n*n)
int oringinal( int v[], int len )
{
int sofar = v[0];
int i;
int j;
int sum = 0;
for( i = 0; i < len; i++ )
{
sum = 0;
for( j = i; j < len; j++ )
{
sum += v[j];
sofar = closeZero( sum, sofar );
}
}
return sofar;
}
运行结果:
不知道复杂度还可不可以降低,如果有更好的算法,望回复,谢谢!
/*博主寄语:如若发现错误,望指出,谢谢*/
- 求一个向量的任何连续最接近0的子向量的和
- 求一个向量的任何连续子向量的最大和的4种算法实现(简单实例)
- 求输入向量的任何连续子向量的最大和
- 求输入向量的任何连续子向量中的最大和
- 【扫描算法】求一个向量的元素和最大的连续子向量 --编程珠玑
- 扫描算法求一个向量的元素和最大的连续子向量
- 求向量的最大子向量和
- 连续子向量的最大和
- 最大连续子向量和的计算
- 找出连续子向量的最大和
- 编程珠玑第八章,最接近0的的子向量
- 编程珠矶 第八章 第10题 寻找最接近0和t的子向量
- 找出数组中任何相邻子向量的最大和
- 算法理解——求连续子向量的最大和
- 求连续向量的最大子和问题(扫描算法)
- C++中求数组连续子向量的最大和(牛客剑指offer)
- 算法理解——求连续子向量的最大和
- 求数组中任何连续子向量之和
- git config命令使用第一篇——介绍,基本操作,增删改查
- sum of all integer numbers
- BibTeX: How to cite a website
- Win32 MASM汇编程序基本结构
- 大小写互换
- 求一个向量的任何连续最接近0的子向量的和
- LUA脚本组件系统(一)
- 最近点对
- 分享17个漂亮的电子商务网站
- QT移植详解
- 第三大
- 图灵访谈之三十二:我的精神家园——陈皓专访
- 对C++中const T*&含义的理解
- 练练