如何确定一个序列中上升子序列的最大和,长度不限?

2026-06-09 09:234阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计696个文字,预计阅读时间需要3分钟。

如何确定一个序列中上升子序列的最大和,长度不限?

总时间限制:1000ms,内存限制:65536kB,描述一个数的序列bi,当b1b2bS时,我们称这个序列是上升的。

总时间限制:1000ms内存限制:65536kB描述一个数的序列bi,当b1b2bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,
总时间限制:
1000ms
内存限制:
65536kB
描述

一个数的序列bi,当b1

如何确定一个序列中上升子序列的最大和,长度不限?

输入
输入的第一行是序列的长度N (1 <= N <= 1000)。第二行给出序列中的N个整数,这些整数的取值范围都在0到10000(可能重复)。
输出
最大上升子序列和
样例输入
71 7 3 5 9 4 8
样例输出
18
注意!!!是求上升子序列的最大值(长度不一定最长,但值一定最大)
#include using namespace std; int main() { int i,j,n,max,k; int a[1005],dp[1005]; //dp[i]存储当前的最长上升子序列的和的最大值 scanf("%d", for(i=0;ia[j]} } max=-1; for(i=0;imax) //寻找最大值 { max=dp[i]; } printf("%d\n",max); return 0; } 如果求长度最长的子序列的和(如果长度相同,输出第一个) 可参考一下代码#include #include using namespace std; int main() { int i,j,n,max,k; int a[1005],b[1005],c[1005]; //b[i]存储当前的最长上升子序列的值 scanf("%d", for(i=0;ia[j] c[i]=c[j]+a[i]; } } max=0; for(i=0;imax) //寻找最大值 { max=b[i]; k=i;} printf("%d\n",c[k]); return 0; }

本文共计696个文字,预计阅读时间需要3分钟。

如何确定一个序列中上升子序列的最大和,长度不限?

总时间限制:1000ms,内存限制:65536kB,描述一个数的序列bi,当b1b2bS时,我们称这个序列是上升的。

总时间限制:1000ms内存限制:65536kB描述一个数的序列bi,当b1b2bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,
总时间限制:
1000ms
内存限制:
65536kB
描述

一个数的序列bi,当b1

如何确定一个序列中上升子序列的最大和,长度不限?

输入
输入的第一行是序列的长度N (1 <= N <= 1000)。第二行给出序列中的N个整数,这些整数的取值范围都在0到10000(可能重复)。
输出
最大上升子序列和
样例输入
71 7 3 5 9 4 8
样例输出
18
注意!!!是求上升子序列的最大值(长度不一定最长,但值一定最大)
#include using namespace std; int main() { int i,j,n,max,k; int a[1005],dp[1005]; //dp[i]存储当前的最长上升子序列的和的最大值 scanf("%d", for(i=0;ia[j]} } max=-1; for(i=0;imax) //寻找最大值 { max=dp[i]; } printf("%d\n",max); return 0; } 如果求长度最长的子序列的和(如果长度相同,输出第一个) 可参考一下代码#include #include using namespace std; int main() { int i,j,n,max,k; int a[1005],b[1005],c[1005]; //b[i]存储当前的最长上升子序列的值 scanf("%d", for(i=0;ia[j] c[i]=c[j]+a[i]; } } max=0; for(i=0;imax) //寻找最大值 { max=b[i]; k=i;} printf("%d\n",c[k]); return 0; }