hdu 1003 hdu1231 简单dp最大子串和
2013-11-07 13:44
501 查看
hdu1003
hdu1231
# include<iostream> # include<string.h> using namespace std; const int maxn=100005; int a[maxn]; int dp[maxn], s[maxn]; int main(void) { int t, n, i, j; cin>>t; for(j=1; j<=t; j++) { cin>>n; for(i=1; i<=n; i++) cin>>a[i]; memset(dp, 0, sizeof(dp)); dp[1]=a[1]; s[1]=1; for(i=2; i<=n; i++) { if(dp[i-1]<0) { dp[i]=a[i]; s[i]=i; } else { dp[i]=dp[i-1]+a[i]; s[i]=s[i-1]; } } int maxi=1; for(i=2; i<=n; i++) { if(dp[i]>dp[maxi]) { maxi=i; } } cout<<"Case "<<j<<":"<<endl<<dp[maxi]<<" "<<s[maxi]<<" "<<maxi<<endl; if(j!=t) cout<<endl; } return 0; }
hdu1231
# include<stdio.h> # include<string.h> const int maxn=100005; int a[maxn]; int dp[maxn], s[maxn]; int main(void) { int n, i, j; while(scanf("%d", &n)!=EOF, n) { for(i=1; i<=n; i++) scanf("%d", &a[i]); memset(dp, 0, sizeof(dp)); dp[1]=a[1]; s[1]=1; for(i=2; i<=n; i++) { if(dp[i-1]<0) { dp[i]=a[i]; s[i]=i; } else { dp[i]=dp[i-1]+a[i]; s[i]=s[i-1]; } } int maxi=1; for(i=2; i<=n; i++) { if(dp[i]>dp[maxi]) { maxi=i; } } if(dp[maxi]<0) printf("%d %d %d\n", 0, a[1], a ); else printf("%d %d %d\n", dp[maxi],a[s[maxi]],a[maxi]); } return 0; }
相关文章推荐
- DP--HDU 1003(最大子串和)
- hdu 1003 基础dp:最大字连续子串和
- DP--HDU 1003(最大子串和)
- (hdu step 3.2.1)Max Sum(简单dp:求最大子序列和、起点、终点)
- hdu1003 Max Sum(DP之最大子序列和)
- hdu 1505 City Game 简单DP 最大子矩阵 迭代法
- hdu 1003 Max Sum 简单DP
- hdu 1003 Max Sum 最大字段和 dp
- HDU 1003 Max Sum(dp,最大连续子序列和)
- (step3.2.1)hdu 1003(Max Sum——简单DP)
- HDU 1003(简单dp)
- hdu 1559(简单的dp)最大子矩阵
- HDU 1003 Max Sum 最大子段和dp解题
- hdu 1159(Common Subsequence)简单dp,求出最大的公共的字符数
- hdu 1559 最大子矩阵 (简单dp)
- HDU 1003 Max Sum——dp求最大连续和O(n)
- HDU 1003--DP(最大子序列和)
- hdu 1501 简单dp (最长公共子串的变形)
- hdu 1003 最大最长子序列 dp
- HDU 1003 Max Sum (入门DP[1] 最大连续子序列)