备战ACM校赛

今晚回顾了大一下学期计算智能的两道题,收获了一些东西。

先将两道题目po上来。

/*

6581 Number Triangle    时间限制:500MS  内存限制:1000K
Description
        7
      3   8
    8   1   0
  2   7   4   4
4   5   2   6   5
   (Figure 1)
Figure 1 shows a number triangle. Write a program that calculates the highest sum of numbers passed on a route that starts at the top and ends somewhere on the base. Each step can go either diagonally down to the left or diagonally down to the right.

输入格式
Your program is to read from standard input. The first line contains one integer N: the number of rows in the triangle.
The following N lines describe the data of the triangle. The number of rows in the triangle is > 1 but <= 100.
The numbers in the triangle, all integers, are between 0 and 99.

输出格式
Your program is to write to standard output. The highest sum is written as an integer.

输入样例
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

输出样例

30

*/

******************************华丽的分割线******************************

***************************以下是题目二***************************

/*

8615 快乐    时间限制:500MS  内存限制:1000K
Description
Lian是一个喜欢看动画片的人,自从成为ACMer(ACM爱好者)之后,他又迷上了网上做题。做题让他快乐,不过这也是需要付出精力的!!
假设有n道题,Lian做出第i道题后,他可以获得的快乐指数将增加gethappy[i],而消耗掉的精力将是losspow[i]。
假设Lian初始的快乐指数为1,精力为2000。可以理解,如果他消耗完了所有的精力那他得到再多的快乐都没有用。
你的任务就是帮他计算他所能得到的最多的快乐指数,且最后他依然有多余的精力(即至少为1)。

输入格式
第一行输入一个整数n,表示有n个人。(n<=50)
第二行输入n个整数,表示gethappy[1]到gethappy[n]
第三行输入n个整数,表示losspow[1]到losspow[n]。

输出格式
一个整数,表示Lian所能获得的最大快乐指数。
输入样例
3
15 23 61

350 1301 1513


输出样例
77
*/

题目一是有关动态规划的问题,题目二是典型的0-1背包问题 。

背包问题相关:

背包问题(Knapsack problem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。相似问题经常出现在商业、组合数学,计算复杂性理论、密码学和应用数学等领域中。也可以将背包问题描述为决定性问题,即在总重量不超过W的前提下,总价值是否能达到V?它是在1978年由Merkel和Hellman提出的。

今晚回顾完这两道题,我对动态规划、背包问题有了更深的认识 。回想当初大一下学期,为了应对期末机考,这两道题就是背代码背下来的,并没有深入地理解,当初也是一种急功近利的表现吧,有种侥幸心理,安慰自己说:“快要考试了,我现在不会就不会嘛,先把代码背下来,过了这个考试再说。”结果我确实背了下来,但又收获了什么呢?

今晚算是还了以前的“债”,对旧知识有了一种新的认识,也不枉费我一番精力,将其记录下来。


你可能感兴趣的:(学习生活杂谈)