HAUTOJ奇数最大子段和
来源:互联网 发布:莎莎官网app网络慢 编辑:程序博客网 时间:2024/06/05 10:18
题目描述
一个大小为n的数组a1到an(−10^4≤ai≤10^4)。请你找出一个连续子段,使子段长度为奇数,且子段和最大。
输入
第一行为T(1≤T≤5),代表数据组数。
之后每组数据,第一行为n(1≤n≤10^5),代表数组长度。
之后一行n个数,代表a1到an。
输出
每组数据输出一行,表示满足要求的子段和最大值
样例输入
141 2 3 4
样例输出
9
蛮有意思的一道题,和最大子段和极其相似。
思路:
先从奇数扫一遍最大,再从偶数扫一遍,最后比较输出。
方法比较奇妙。
代码:
#include<cstdio>#include<iostream>#include<cmath>using namespace std;int ax[100005];int main(){ int t; scanf("%d",&t); while (t--) { int n; scanf("%d",&n); for (int i=0; i<n; ++i) { scanf("%d",&ax[i]); } int ans,sum; ans=ax[0]; sum=ax[0]; //首先扫一边奇数 for (int i=1; i<n-1; i+=2) { sum=sum+ax[i]+ax[i+1]; if (sum<ax[i+1]) { sum=ax[i+1]; } if (ans<sum)ans=sum; } printf("ans=%d\n",ans); sum=ax[1]; ans=max(ans,sum);//这句很重要,没有这句虽然能过,但是-4 3 2这个样例过不了; //扫一遍偶数 for (int i=2; i<n-1; i+=2) { sum=sum+ax[i]+ax[i+1]; if (sum<ax[i+1]) { sum=ax[i+1]; } if (ans<sum) ans=sum; } printf("%d\n",ans); } return 0;}
0 0
- HAUTOJ奇数最大子段和
- hautoj 最大子段和
- HAUTOJ 1266 最大子段和(dp)
- HAUTOJ-1266-最大子段和
- HAUTOJ 1266 最大子段和
- HAUTOJ 1266: 最大子段和 河工大校赛DP
- 奇数最大子段和 dp
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- “最大子段和”
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- JAVA实现——单链表
- githup的使用命令
- git代理设置
- linux下SDL安装步骤
- 一个余数问题的思考
- HAUTOJ奇数最大子段和
- Android 中数据存储模块 实现商品展示
- Mybatis的配置和使用
- freeBSD 装载u盘、cd问题
- MobileNets 论文笔记
- caffe学习笔记----4-matlab接口总结
- STL综合案例
- 下辈子千万不要做程序员,少很多失眠
- 148. Sort List 链表排序(C++)