`

[ACM实验三]ACM程序设计基础(1)

 
阅读更多

从实验三开始使用scanf与printf进入输入输出,具体原因详见:[ACM学习心得]关于sync_with_stdio(false);

实验项目:ACM程序设计基础(1)

实验目的:掌握C++程序设计基础。

实验要求:使用VC++6.0实现实验要求。

实验内容:

1.输入年、月、日,计算该日是该年的第n天,输出n。


2.对于大于等于6的偶数,可以表示为2个素数之和,请判断一个数是否是对称数,如果该数为对称数而且是偶数,输出其和等于该数的2个素数。


3.FireNet问题,要求输出最优值和最优值对应的最优解。

比正常的FireNet问题,多了输出最优解的要求,本题只对最优解部分做出解释,具体解题思路详见文章:[ACM_ZOJ_1002]Fire Net

代码如下:


附加题:

4.0-1背包问题:有N件物品和一个容量为V的背包。第i件物品的体积是c[i],价值是w[i]。物品(1.可以;2.不可)切割出来只是装一部分,求解将哪些物品装入背包可使这些物品的体积总和不超过背包容量,且价值总和最大,先输入物品数n和背包容量v,然后输入各个物品费用和价值,输出最大价值。

可分割示例:

输入:
320182515241015
5 20 6 3 2 5 3 8 10 6 7 4

输出:
31.5
21.9

不可分割示例:

输入:
5 100 77 92 22 22 29 87 50 46 99 90
8 200 79 83 58 14 86 54 11 79 28 72 62 52 15 48 68 62

输出:
133
334

可切割(比较简单,直接找性价比最高的不断放入直到放满为止):


不可切割(相对较难,思路与FireNet一样,通过回溯求解):


原文地址(本人博客):http://lanfei.sinaapp.com/2012/03/326.html

欢迎访问交流。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics