博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
题目1480:最大上升子序列和
阅读量:4104 次
发布时间:2019-05-25

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

题目1480:最大上升子序列和

时间限制:1 秒

内存限制:128 兆

特殊判题:

提交:562

解决:175

题目描述:

一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ...,aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中序列和最大为18,为子序列(1, 3, 5, 9)的和.

你的任务,就是对于给定的序列,求出最大上升子序列和。注意,最长的上升子序列的和不一定是最大的,比如序列(100, 1, 2, 3)的最大上升子序列和为100,而最长上升子序列为(1, 2, 3)。

输入:

输入包含多组测试数据。

每组测试数据由两行组成。第一行是序列的长度N (1 <= N <= 1000)。第二行给出序列中的N个整数,这些整数的取值范围都在0到10000(可能重复)。

输出:

对于每组测试数据,输出其最大上升子序列和。

样例输入:
71 7 3 5 9 4 8
样例输出:
18
来源:

/**********************************   日期:2013-3-25*   作者:SJF0115*   题号: 题目1480:最大上升子序列和*   来源:http://ac.jobdu.com/problem.php?pid=1480*   结果:AC*   来源:2012年北京大学计算机研究生机试真题*   总结:**********************************/#include
#include
int array[1010];int Max[1010];void LIS(int k){ memset(Max,0,sizeof(Max)); for(int i = 1;i <= k; i++){ Max[i] = array[i]; //和i号数据之前的数据比较 for(int j = 1;j < i;j++){ if(array[i] > array[j]){ if(Max[i] < Max[j] + array[i]){ Max[i] = Max[j] + array[i]; } } } }} int main(){ int N,i; //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin); while(scanf("%d",&N)!=EOF){ //输入数据 for(i = 1;i <= N;i++){ scanf("%d",&array[i]); } LIS(N); //输出最大值 int MaxValue = -1; for(i = 1;i <= N;i++){ if(MaxValue < Max[i]){ MaxValue = Max[i]; } } printf("%d\n",MaxValue); } return 0;}

转载地址:http://pucsi.baihongyu.com/

你可能感兴趣的文章
剑指offer——链表中倒数第k个结点
查看>>
剑指offer——数值的整数次方
查看>>
剑指offer——表示数值的字符串
查看>>
udev详解
查看>>
Java基本数据类型
查看>>
JDBC访问数据库的步骤
查看>>
Java重载和重写的特点和区别
查看>>
事务的特性以及事务的隔离级别
查看>>
贝叶斯决策及效用函数
查看>>
潮水褪去看中台落地实践:(1)中台的官方定义
查看>>
潮水褪去看中台落地实践-学习资料下载(1):《业务中台建设方法之“中台需求结构化”(普元-喻吉林)》
查看>>
解决VS2012(update3)静态编译的Qt5.1.1程序无法运行的问题
查看>>
VS2012(update3)编译Qt5.1.1 32位静态库debug-and-release版及结果分享
查看>>
VS2012中使用编译的Qt-5.1.1静态库开发程序
查看>>
Fedora 14 、16 设置普通用户自动登陆
查看>>
中兴F460光猫破解超级管理员
查看>>
vmtools官方下载地址
查看>>
提取vmware tools的windows.iso文件方法
查看>>
大量远控源码
查看>>
常见的Radius服务器
查看>>