作业五 动态规划

记录点滴。

  1 /*
  2 2015.6    HT
  3 ACM Work_5
  4
  5 */
  6
  7 #include <iostream>
  8 #include <algorithm>
  9 using namespace std;
 10
 11 /*
 12 数塔
 13 要求从顶层走到底层,若每一步只能走到相邻的结点
 14 采用自底向上方法,当前层的数的值由下一层的两个数的值决定
 15 Input:
 16 1
 17 5
 18 7
 19 3 8
 20 8 1 0
 21 2 7 4 4
 22 4 5 2 6 5
 23 Output:
 24 30
 25 */
 26 //int main()
 27 //{
 28 //    int t, n, x[102][102];
 29 //    cin >> t;
 30 //    while (t--)
 31 //    {
 32 //        cin >> n;
 33 //        for (int i = 0; i<n; i++)
 34 //        for (int j = 0; j <= i; j++)
 35 //            cin >> x[i][j];
 36 //        for (int i = n - 2; i >= 0; i--)
 37 //        for (int j = 0; j <= i; j++)
 38 //            x[i][j] = x[i][j] + max(x[i + 1][j], x[i + 1][j + 1]);
 39 //
 40 //        cout << x[0][0] << endl;
 41 //    }
 42 //    return 0;
 43 //}
 44
 45
 46
 47 /*
 48 免费馅饼
 49 0-1-2-3-4-5-6-7-8-9-10
 50 */
 51 //int c[1000][11];
 52 //
 53 //int max1(int a, int b, int c)
 54 //{
 55 //    a = a>b ? a : b;
 56 //    a = a>c ? a : c;
 57 //    return a;
 58 //}
 59 //
 60 //int main()
 61 //{
 62 //    int n, a, b;
 63 //    while (cin >> n && n)
 64 //    {
 65 //        int m = 0;
 66 //        memset(c, 0, sizeof(c));
 67 //        while (n--)
 68 //        {
 69 //            // 坐标点        落下时刻
 70 //            scanf_s("%d%d", &a, &b);
 71 //            c[b][a]++;
 72 //            if (m < b)
 73 //                m = b;
 74 //        }
 75 //        for (int i = m - 1; i >= 0; i--)
 76 //        {
 77 //            for (int j = 1; j <= 9; j++)
 78 //                c[i][j] = c[i][j] + max1(c[i + 1][j - 1], c[i + 1][j], c[i + 1][j + 1]);
 79 //            c[i][0] = c[i][0] + max(c[i + 1][0], c[i + 1][1]);
 80 //            c[i][10] = c[i][10] + max(c[i + 1][9], c[i + 1][10]);
 81 //        }
 82 //        cout << c[0][5] << endl;
 83 //    }
 84 //    return 0;
 85 //}
 86
 87
 88
 89 /*
 90 Super Jumping! Jumping! Jumping!
 91 求解最大递增子序列和
 92
 93 如:3 1 4
 94 如果第二个数大于第一个数,dp[2]=dp[1]+num[2];如果不大,dp[2]=num[2]; dp[3]=7表示三个数的最大值
 95 首先比较num[3]和num[1],如果num[3]>num[1],dp[3]=7先存下来,如果num[3]>num[2],dp[3]=5依旧存下来;
 96 还有一种如果num[3]比前两个值都小,dp[3]=num[3]; 最后在存下来的dp[3]中找到一个最大的
 97 */
 98 //int num[1010], dp[1010];
 99 //
100 //int main()
101 //{
102 //    int n, Max;
103 //    while (cin >> n)
104 //    {
105 //        if (n == 0)
106 //            break;
107 //        Max = 0;
108 //        memset(dp, 0, sizeof(dp));
109 //        for (int i = 0; i < n; i++)
110 //        {
111 //            cin >> num[i];
112 //        }
113 //        dp[0] = num[0];
114 //        for (int i = 1; i < n; i++)
115 //        {
116 //            for (int j = 0; j<i; j++)
117 //            {
118 //                if (num[i] > num[j])
119 //                    dp[i] = max(dp[i], dp[j] + num[i]);
120 //            }
121 //            dp[i] = max(dp[i], num[i]);
122 //        }
123 //        for (int i = 0; i<n; i++)
124 //        {
125 //            Max = max(Max, dp[i]);
126 //        }
127 //        cout << Max << endl;
128 //    }
129 //    return 0;
130 //}
131
132
133
134 /*
135 Max Sum
136 calculate the max sum of a sub-sequence
137 */
138 int main()
139 {
140     int i, Case = 1, t, start, end, n, pos, now, before, max;
141     cin >> t;
142     while (t--)
143     {
144         cin >> n;
145         for (i = 1; i <= n; i++)
146         {
147             cin >> now;
148             if (i == 1)
149             {
150                 max = before = now;
151                 pos = start = end = 1;
152             }
153             else
154             {
155                 if (now > now + before)
156                 {
157                     before = now;
158                     pos = i;
159                 }
160                 else
161                     before += now;
162             }
163             if (before > max)
164             {
165                 max = before;
166                 start = pos;
167                 end = i;
168             }
169         }
170         printf_s("Case %d:\n%d %d %d\n", Case++, max, start, end);
171         printf_s("\n");
172     }
173     return 0;
174 }
时间: 2025-01-13 16:45:13

作业五 动态规划的相关文章

吉克1111-1114第七周讲座班、家庭作业(动态规划,期限:2014年4月25日本23点-周五晚上,科委飞信通知学生)

<设计和算法分析>课程,教学工作的厚礼,是<算法导论>(Sanjoy Dasgupta等待,清华大学出版社.2008年7第一个月1版本). 文章7周,主要教材 文章6章 动态规划 讨论.Dynamic Programming(简称DP).是一个通用的问题求解方法,主要用于运筹学方面的最优化问题.因为其对思维能力的高要求.非常受各大公司笔试.面试欢迎.同学们在開始学习时.能够循序渐进,先理解教材中问题的精要并总结,然后去编程实现2-3个问题.最后去网上找3-10道笔试.面试题求解来开

作业五

第一栏 第二栏 第三栏 第四栏 第五栏 我希望成为动漫设计师或者网页设计师 专业知识的不足 有空的时候自学相关知识 进度缓慢 差

团队作业(五)-笔记app top5

在互联网快速发展的情况下,各个行业的软件层出不穷,五花八门.各个行业都有相当多的软件介入其中,在如此多的软件之中,便有了相当激烈的竞争角逐.今天我们十五万的总冠军就着笔记APP行业中位列top 5的软件来进行一下深入的探讨.一款好的笔记软件可以让我们更加省心的记录自己的重要的事情,并可以随时按我们的要求进行提醒.所以喜欢记录的用户在PC还有移动设备上怎么能没有几款好的笔记软件呢. 笔记软件是简单快速的个人记事备忘工具,现在大多数笔记类的软件都具备同步功能,可以在PC,移动设备与云服务器上实现同步

作业五之系统设计时所实现的质量属性战术

一.可用性战术 恢复或修复错误是可用性的重要方面 战术:异常,识别错误的一个方法就是遇到了异常,异常战术在一个进程中操作. 写action时需要加上异常处理,异常处理常被用到与数据库交互的地方,也是传递操作信息的好方法,比如保存成功或失败了都可以用抛出异常和接受异常来处理要显示的信息. 二.易用性战术 易用性战术与用户完成期望任务的难易程度以及系统为用户提供的支持种类有关.我们的系统填报信息时需要必要的智能联想. 三.可修改性战术 战术:维持语义的一致性,某一个模块只负责一小部分的功能.将系统分

作业五:封装与测试

1 import java.awt.Dimension; 2 import java.awt.FlowLayout; 3 import java.awt.GridLayout; 4 import java.awt.Toolkit; 5 import java.awt.event.ActionEvent; 6 import java.awt.event.ActionListener; 7 8 import javax.swing.JButton; 9 import javax.swing.JFra

团队作业五之旅游行业手机APP分析

深入分析旅游业手机APP——分析员王奕  在接到组长分配的任务的时候,我的内心是激动的.因为自己不擅长编程,所以还是比较喜欢这种“外围”的文字工作.但是,面对数量庞大的旅游业APP,一时间自己真的不知道如何下手,所以这里特别感谢我的队友们帮助我分析并且理出基本思路,让我明白我们的团队真的是像太阳一样. 移动互联网解放了人们的上网环境,旅游类App应运而生,蕴藏的巨大的商业契机和市场前景,引来众多互联网公司争相布局,携程旅行.去哪儿旅行.同程旅游占得先机,BAT三巨头当然不会错过好戏,创业型新兴互

作业五 循环结构

Ⅰ.知识点: 一.while语句 ·格式 while (表达式) { 语句: --    语句: } 二.do-while语句 ·格式 do { 语句;   ......     语句; }while(表达式); 三.while和do-while的比较 ·while语句根据表达式值的真假决定是否执行循环体. ·不管表达式的值是什么,do-while语句至少执行一次循环体. ·当while语句和do-while语句具有相同的循环体时:如果while后面的表达式的值为"真",两种语句的结果

作业五 测试与封装

封装类 package com.szys.junit; public class Packaging { int m; int n; public T(int m,int n) { this.m=m; this.n=n; } public int add() { return m + n; } public int minus() { return m - n; } public int mul() { return m * n; } public int div()throws Excepti

作业五 5.2 5.3

一.代码源 package aaa; import java.text.DecimalFormat; import java.util.Scanner; public class Dada { public static void main(String[] args) { int condition=1 ; Dada dada = new Dada(); Scanner scanner = new Scanner(System.in); while(condition==1){ System.