HDOJ 1003

动态规划一直AC不了竟然是因为一厢情愿的多加了一个#!
  printf("Case #%d:\n",count);
----------------------------------------------------

1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int num[100000];
 4 int dp[100000];
 5
 6 int main()
 7 {
 8     int times;
 9     scanf("%d",&times);
10     int length;
11     int count=1;
12     while(times--)
13     {
14
15         scanf("%d",&length);
16
17         int i=0;
18         for(i=0;i<length;i++)
19             scanf("%d",&num[i]);
20         dp[0]=num[0];
21         int dpmax=dp[0];
22         int begin=0,end=0,maxbegin=0,maxend=0;
23         for(i=1;i<length;i++)
24             {
25             if(dp[i-1]+num[i]>=num[i])
26                 {
27                 dp[i]=dp[i-1]+num[i];
28                 end=i;
29                 }
30             else
31                 {
32                 dp[i]=num[i];
33                 begin=i;
34                 end=i;
35                 }
36             if(dp[i]>dpmax)
37                 {
38                 dpmax=dp[i];
39                 maxbegin=begin;
40                 maxend=end;
41                 }
42             }
43         printf("Case %d:\n",count);
44         count++;
45         printf("%d %d %d\n",dpmax,maxbegin+1,maxend+1);
46         if(times>0)
47             printf("\n");
48     }
49     return 0;
50 }
时间: 2024-09-08 14:21:39

HDOJ 1003的相关文章

hdoj 1003 Max Sum 【最大子段和】【贪心】

题意:... 策略:看着像贪心,感觉也是贪心. 很久之前做的,又做了一遍,好题. 代码: #include<stdio.h> #include<string.h> int s[100005]; int main() { int t, i, j, l, st, en, n, v = 1; scanf("%d", &t); while(t --){ scanf("%d", &n); for(i = 1; i <= n; i

最大子序列和 HDOJ 1003 Max Sum

题目传送门 1 /* 2 题意:求最大连续子序列和及两个端点 3 累积遍历算法 O(n):依照sum<0将序列分块,最值在某一块上产生.dp也是同样的思路:dp[i] = max (dp[i-1] + a[i], a[i]) 其实是一样的 4 1003就这么难?? 5 详细解释 6 */ 7 /************************************************ 8 * Author :Running_Time 9 * Created Time :2015-8-10

HDOJ 1003 Max Sum(dp)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 思路分析:该问题为最大连续子段和问题,使用动态规划求解: 1)最优子结构:假设数组为A[0, 1, 2,….., n],在所有的可能的解中,即解空间中找出所有的解,可以知道,所有的解都为以A[j](j = 0, 1, …, n) 为尾的连续子段,则假设dp[j]表示以在数组A[1, 2, …, j]中以A[j]结尾的字段的最大的和,我们就可以刻画子空间中的所有解的特征:如果 dp[j] > 0

HDOJ 1003 Max Sum【MSS】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 158875    Accepted Submission(s): 37166 Problem Description Given a sequence a[1],a[2

[HDOJ 1003]动态规划法求和最大的连续子序列

题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1003 Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (-1) + 5

hdoj 1003 Max Sum

Max Sum Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 11   Accepted Submission(s) : 5 Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a su

Hdoj 1003.Max Sum 题解

Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (-1) + 5 + 4 = 14. Input The first line of the input contains

nyoj 104 最大和 【dp】

最大和 时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描述 给定一个由整数组成二维矩阵(r*c),现在需要找出它的一个子矩阵,使得这个子矩阵内的所有元素之和最大,并把这个子矩阵称为最大子矩阵. 例子: 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 其最大子矩阵为: 9 2 -4 1 -1 8 其元素总和为15. 输入 第一行输入一个整数n(0<n<=100),表示有n组测试数据: 每组测试数据: 第一行有两个的整数r,c(0<r,

HDOJ 题目分类

HDOJ 题目分类 /* * 一:简单题 */ 1000:    入门用:1001:    用高斯求和公式要防溢出1004:1012:1013:    对9取余好了1017:1021:1027:    用STL中的next_permutation()1029:1032:1037:1039:1040:1056:1064:1065:1076:    闰年 1084:1085:1089,1090,1091,1092,1093,1094, 1095, 1096:全是A+B1108:1157:1196:1