迅雷笔试题
时间:2010-09-14
来源:互联网
例:{9, -12, 120, 8, -20, 100, 30, -89, 20}
结果是{120, 8 , -20, 100, 30}的和最大,为 238
函数声明:
int max_sum(int *array, int array_len);
不会做,想把所有可能的和都给算出来再查找,没好意思写...
迅雷嵌入式开发的,昨晚通宵背C++语法,结果C++一点没考,睡觉去了,大家贴答案,晚上起来看

作者: davycu 发布时间: 2010-09-14
开始时 max=0 max start=0 max end=0 total=0;
只要 什么时候 total <=0 , 就断开, 重新计算。
最后是可以找出来的。
作者: goldenfort 发布时间: 2010-09-14
作者: phy0077 发布时间: 2010-09-14
有个想法:
- for(i=0;i<len;i++)
- {
- temp[0]=sum;
- sum+=array[i];
- temp[1]=sum;
- result[n]=array[i];
- if(temp[0]>temp[1])
- {sum=0;if(temp[0]>temp[3]){temp[3]=temp[0];result[]='\0';n=-1;}
- n++;
- }

作者: Mr-Summer 发布时间: 2010-09-14

作者: empty141 发布时间: 2010-09-14
- #include <stdio.h>
-
- int sum(int *array, int array_len)
- {
- int i;
- int sum_data;
-
- sum_data = 0;
- for (i = 0; i < array_len; i++) {
- sum_data += array[i];
- }
- return sum_data;
- }
-
- int max_sum(int *array, int array_len)
- {
- int max_data;
- int max_start;
- int max_end;
- int i, j;
- int data;
-
- if (array_len > 0) {
- max_data = array[0];
- max_start = 0;
- max_end = 0;
- for (i = 0; i < array_len; i++) {
- for (j = i; j < array_len; j++) {
- data = sum(array + i, j - i + 1);
- if (data > max_data) {
- max_data = data;
- max_start = i;
- max_end = j;
- }
- }
- }
- printf("{");
- for (;max_start <= max_end; max_start++) {
- printf("%d", array[max_start]);
- if (max_start < max_end) {
- printf(", ");
- }
- }
- printf("}\n");
- return 0;
- }
- return -1;
- }
-
- #define LENGTH(a) (sizeof(a)/sizeof((a)[0]))
-
- int main(void)
- {
- int a[] = {9, -12, 120, 8, -20, 100, 30, -89, 20};
- max_sum(a, LENGTH(a));
- return 0;
- }
作者: cobras 发布时间: 2010-09-14
作者: goldenfort 发布时间: 2010-09-14
代码如下。
- #include <iostream>
- using namespace std;
-
- int main()
- {
- int a[] = {9, -12, 120, 8, -20, 100, 30, -89, 20};
- int total;
- int maxmum;
- int len;
- int startindex;
- total = maxmum = len = 0;
- startindex = 0;
- //int i;
- for (int i = 0 ; i < sizeof(a)/sizeof(a[0]); i++)
- {
- total += a[i];
- if (total < 0)
- {
- len = 0;
- startindex = i+1;
- total = 0;
- }
-
- if (total > maxmum)
- {
- maxmum = total;
- len = i - startindex + 1;
- }
- }
-
- cout << "start index:" << startindex << "\t" << "length:" << len << "\t" << "maxmum:" << maxmum << endl;
-
- return 0;
- }
作者: zhanglistar 发布时间: 2010-09-14
作者: blacktt 发布时间: 2010-09-14

作者: starzhestarzhe 发布时间: 2010-09-14
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28