HDU-1087 Super Jumping! Jumping! Jumping!(上升子序列最大和)
2017-02-16 22:13
513 查看
和求最长上升子序列的元素个数有点相似,状态转移方程为dp[i]=max(dp[j]+a[i],dp[i])其中a[j]<a[i], 注意要把所有元素都小于0的情况单独拿出来讨论
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int p=-0x3f3f3f3f;
int main(){
int n;
long long a[1000+1];
long long dp[1000+1];
int flag;
while(cin>>n&&n!=0){
flag=0;
memset(dp,p,sizeof(dp));
dp[0]=0;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]>=0) flag=1;
}
for(int i=1;i<=n;i++){
for(int j=0;j<i;j++){
if(a[j]<a[i]) dp[i]=max(dp[j]+a[i],dp[i]);//因为j从0开始递增且dp[0]=0,就使得dp[i]刚开始就等于a[i]
}
}
if(!flag){
sort(a,a+n+1);
cout<<a[n-1]<<endl;
continue;
}
sort(dp,dp+n+1);
cout<<dp
<<endl;
}
return 0;
}
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int p=-0x3f3f3f3f;
int main(){
int n;
long long a[1000+1];
long long dp[1000+1];
int flag;
while(cin>>n&&n!=0){
flag=0;
memset(dp,p,sizeof(dp));
dp[0]=0;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]>=0) flag=1;
}
for(int i=1;i<=n;i++){
for(int j=0;j<i;j++){
if(a[j]<a[i]) dp[i]=max(dp[j]+a[i],dp[i]);//因为j从0开始递增且dp[0]=0,就使得dp[i]刚开始就等于a[i]
}
}
if(!flag){
sort(a,a+n+1);
cout<<a[n-1]<<endl;
continue;
}
sort(dp,dp+n+1);
cout<<dp
<<endl;
}
return 0;
}
相关文章推荐
- hdu 1087 Super Jumping! Jumping! Jumping!(上升子序列最大和)
- HDU 1087 Super Jumping! Jumping! Jumping! 最大递增子序列
- HDU 1087(Super Jumping! Jumping! Jumping!)不降子序列和最大
- HDU 1087 Super Jumping! Jumping! Jumping![动态规划——最大递增子序列]
- HDU-1087 Super Jumping! Jumping! Jumping! (线性dp 上升子序列最大和)
- hdu 1087 Super Jumping! Jumping! Jumping! ( 求序列的最大上升序列 )
- HDU1087--Super Jumping! Jumping! Jumping! (DP动态规划最大上升子序列的和)
- hdu1087 - Super Jumping! Jumping! Jumping! (dp 求递增子序列的最大和)
- hdu 1087 Super Jumping! Jumping! Jumping!(dp:上升子序列最大和)
- HDU1087 Super Jumping! Jumping! Jumping! DP求非连续单调递增序列的最大和
- HDU 1087 Super Jumping! Jumping! Jumping! 最大连续子序列和
- HDU 1087 Super Jumping! Jumping! Jumping! 最大子序列的和
- hdu 1087 Super Jumping! Jumping! Jumping!(基础DP,最大上升子序列和)
- hdu 1087 Super Jumping! Jumping! Jumping!(最大递增子段和)
- HDU 1087--Super Jumping! Jumping! Jumping!【最长递增子序列的和】
- hdu 1087 Super Jumping! Jumping! Jumping! (最大递增子序列和)
- hdu 1087 Super Jumping! Jumping! Jumping! (最大 上升子序列 线性 dp)
- 【最长上升子序列】HDU 1087——Super Jumping! Jumping! Jumping!
- HDU 1087 Super Jumping! Jumping! Jumping!【最大递增子段和】
- HDU 1087 Super Jumping! Jumping! Jumping!(求绝对递增子序列的最大和)