博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
环形数组的组最大字数组求法
阅读量:4701 次
发布时间:2019-06-09

本文共 1044 字,大约阅读时间需要 3 分钟。

设计思路:先遍历所有子数组,然后判断最后一个子数组是否大于0。

 若大于0,则重头开始遍历,直到子数组的和小于0或者到最后一个子

 数组的前一个数为止,在此过程中保存子数组的最大值以及位置。在

 此需要注意的是,如果不加限制条件,求出的最大子数组可能会超过

 原数组的长度。我用了一个限制条件,一旦长度等于原长度,就跳出

 循环。

代码:

#include
#include
int maxSumNoConnect(int*arr,int n){ int i,max,*sum; sum=(int *)malloc(sizeof(int)*n); sum[0]=max=arr[0]; for (i=1;i
0) sum[i]=arr[i]+sum[i-1]; else sum[i]=arr[i]; if(sum[i]>max) max=sum[i];} free(sum);return max;}int indexInArrMinSum(int*arr,int n){int i,loc,min,*sum;sum=(int*)malloc(sizeof(int)*n);min=sum[0]=arr[0];loc=0;for(i=1;i
0){ sum[i]=arr[i];}else{ sum[i]=arr[i]+sum[i-1];}if (sum[i]
0){ sum[cur]=arr[cur]+sum[loc];}else{ sum[cur]=arr[cur];} if(sum[cur]>max) max=sum[cur];} free(sum); return max;}int main(void){ int i,n,flag,conn_n,conn_y,*arr; while(scanf("%d",&n)!=EOF){ arr=(int*)malloc(sizeof(int)*n); for(i=0,flag=0;i

  

运行截图:

 

 

项目设计:苏雄

转载于:https://www.cnblogs.com/4EY4EVER/p/9904861.html

你可能感兴趣的文章
C#垃圾回收机制
查看>>
31、任务三十一——表单联动
查看>>
python之hasattr、getattr和setattr函数
查看>>
maven使用阿里镜像配置文件
查看>>
Copy code from eclipse to word, save syntax.
查看>>
arguments.callee的作用及替换方案
查看>>
P2709 小B的询问
查看>>
PHP echo 和 print 语句
查看>>
第一讲 一个简单的Qt程序分析
查看>>
Centos 6.5下的OPENJDK卸载和SUN的JDK安装、环境变量配置
查看>>
poj 1979 Red and Black(dfs)
查看>>
【.Net基础03】HttpWebRequest模拟浏览器登陆
查看>>
zTree async 动态参数处理
查看>>
Oracle学习之常见错误整理
查看>>
数据库插入数据乱码问题
查看>>
altium annotate 选项设置 complete existing packages
查看>>
【模式识别与机器学习】——SVM举例
查看>>
【转】IT名企面试:微软笔试题(1)
查看>>
IO流入门-第十章-DataInputStream_DataOutputStream
查看>>
DRF的分页
查看>>