数据结构课程笔记--(1)求最大子列的问题
来源:互联网 发布:房产中介必备软件 编辑:程序博客网 时间:2024/06/01 10:42
1.题目一
------------------------------------算法一:在线解决
#include<stdio.h>int max(int L[],int N);int main(){ int L[100000],N,i; scanf("%d",&N); for(i=0;i<N;i++) scanf("%d",&L[i]); printf("%d\n",max(L,N)); return 0;}int max(int L[],int N){int i,j,thissum,maxsum=0;for (i=0;i<N ;i++ ){thissum+=L[i];if (thissum>maxsum)maxsum = thissum;else if(thissum<0)thissum=0;}return maxsum;}
时间复杂度:T(N) = O(N)
-------------------------------算法二:两个循环
算法二:#include<stdio.h>int max(int L[],int N);int main(){ int L[100000],N,i; scanf("%d",&N); for(i=0;i<N;i++) scanf("%d",&L[i]); printf("%d\n",max(L,N)); return 0;}int max(int L[],int N){int thissum,maxsum=0;int i,j;for (i=0;i<N ;i++ ){thissum = 0;for (j=i;j<N ; j++){thissum += L[k];if(thissum > maxsum)maxsum = thissum;}}return maxsum;}
时间复杂度:T(N) = O(N^2)
2.题目2:不但求最大子列的和,还有最大子列的元素
#include<stdio.h>int max(int L[],int N);int main(){ int L[100000],N,i; scanf("%d",&N); for(i=0;i<N;i++) scanf("%d",&L[i]); max(L,N); return 0;}int max(int L[],int N){int thissum,maxsum=0;int i,j,k=0;int left,right;for (i=0;i<N ;i++ ){thissum = 0;if(L[i] <= 0){ k++;}for (j=i;j<N ; j++){thissum += L[j];if(thissum > maxsum){maxsum = thissum;right = L[j];left = L[i];}}}if(k == N){ printf("%d %d %d\n",0,L[0],L[N-1]);}else{ printf("%d %d %d\n",maxsum,left,right);}}
0 0
- 数据结构课程笔记--(1)求最大子列的问题
- 求最大子列和问题(浙江大学数据结构)
- 学习笔记:数据结构、算法::求最大子列和
- 数据结构与算法--求最大子列和问题
- 数据结构(最大子列和问题)
- 学数据结构的第一个算法,最大子列和问题,即求一个数组连续子列和求最大
- 数据结构学习笔记-Day1-最大子列和问题
- 数据结构之多项式最大子列和问题(学习笔记)
- 数据结构 PAT 01-复杂度1 最大子列和问题
- PAT数据结构_01-复杂度1 最大子列和问题
- MOOC 数据结构 最大子列和问题
- 数据结构学习-最大子列和问题
- 【数据结构练习】1.最大子列问题
- 求最大子序列问题-数据结构
- 求数组的最大子列和
- 求最大的连续子列和
- PTA 数据结构题目(1):最大子列和问题(分而治之、在线处理算法)
- 最大子列和问题(同时输出有最大和的子列的首尾元素)【数据结构测试1.2】
- asp.net小数点四舍五入的正确写法
- 用PHP开发购物车网站(第二篇):PDO数据库
- 数据结构学习之冒泡算法
- 排序之冒泡java版
- java 单例模式
- 数据结构课程笔记--(1)求最大子列的问题
- mini2440 烧写流程
- java实现定时任务的三种方法
- 沙盒目录操作注意
- JAVA byte十六进制存储
- html5记录
- 父元素与子元素之间的margin-top问题(css hack)
- JVM 并发性: Java 和 Scala 并发性基础
- java:四种Reference的区别