程序设计实习第二讲.ppt
《程序设计实习第二讲.ppt》由会员分享,可在线阅读,更多相关《程序设计实习第二讲.ppt(43页珍藏版)》请在三一办公上搜索。
1、程序设计实习第二讲,内容提要,POJ简介例题1:Packets例题2:校门外的树例题3:生理周期例题4:确定进制例题5:日历问题,网址及功能 http:/建立帐号 提交作业 查看结果 出错类型,POJ系统说明,出错类型Runtime Error 运行时错Complie Error 编译错Wrong Answer 答案错Presentation Error 格式错Time Limit Exceed 超时,例题1:POJ 1017 Packets(课本P92),题意已知:有6*6 的大箱子和 1*1,2*2,3*3,4*4,5*5,6*6 的木块,箱子高度和木块一样问:给定各种木块的数目,求最少需
2、要多少个大箱子来装?例如:输入:0 0 4 0 0 1-输出 2输入:7 5 1 0 0 0-输出 1,解题思想:先放大的,后放小的,Packets,4*4,5*5,6*6的块单独占一个箱子,Packets,3*3的块,每4块占一个箱子,余下的再占一个箱子,Packets,如果箱子里放1个3*3木块,那么还能放5个2*2木块,以及7个1*1木块,Packets,如果箱子里放2个3*3木块,那么还能放3个2*2木块,以及6个1*1木块,Packets,如果箱子里放3个3*3木块,那么还能放1个2*2木块,以及5个1*1木块,Packets,解题思想:先放大的,后放小的6*6的木块每个占用一个新箱
3、子;5*5的木块每个占用一个新箱子,余下11个1*1的空格;4*4的木块每个占用一个新箱子,余下5个2*2的空格;3*3的木块每4个占用新一个箱子,不足4个也占一个新箱子,分情况余下不同数目的空格;2*2的木块先填空格,空格不足开新箱子,每9个2*2的木块占一个新箱子;1*1的木块先填空格,空格不足开新箱子,每36个占一个新箱子。,Packets,构造法 6*6,5*5,4*4,3*3,2*2,1*1个数 b6 b5 b4 b3 b2 b1nTotal-箱子数1)先放好所有 6*6,5*5,4*4 和3*3 的木块nTotal=b6+b5+b4+(b3+3)/4 4*4,5*5,6*6 单独开
4、箱子 3*3 每4个占一个箱子,余下的占一个箱子,Packets,2)再把2*2的塞到放有3*3木块的箱子里 设一个数组:int Contain24=0,5,3,1;Contain2i 表示当3*3木块的数目除以4的余数分别是0,1,2,3时,会产生多少个能放2*2木块的空格。用数组纪录某些事实,比写 if else 方便 放完2*2的木块后,再算一下有多少1*1的空格,能否把1*1的木块都填进去,如果不能,也容易算出还要加多少个箱子,#include using namespace std;int main()int b6,b5,b4,b3,b2,b1;/不同大小的木块个数int nTota
5、l=0;/最少需要的箱子数目int c1;/当前能放 1*1 木块的空格数目int c2;/当前能放 2*2 木块的空格数目int Contain24=0,5,3,1;while(1)cinb1b2b3b4b5b6;if(b1=0,Packets,3)计算放好6*6,5*5,4*4,3*3后留下多少空格能放2*2c2=5*b4+Contain2b3%4;4)在放好2*2的木块后,算留下多少空格能放1*1c1=36*nTotal-36*b6-25*b5-16*b4-9*b3-4*b2;,例题2:ai2808 校门外的树(P88),某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1
6、米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,L,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。,校门外的树,【输入文件】输入的第一行有两个整数L(1=L=10000)和 M(1=M=100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一
7、个区域的起始点和终止点的坐标。【输出文件】输出包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。,校门外的树,【样例输入】500 3150 300100 200470 471【样例输出】298,校门外的树,思路1:开一个有L+1个元素的数组,每个元素对应一棵树,全部初始化为1,表示各个位置上都有树然后每读入一个区间,就将该区间对应的数组元素都变成0,表示该区间的树都被砍了最后算一下还有几个1,就是还剩几棵树了这种做法比较慢,校门外的树,思路2:将区间按起点排序,然后把所有区间遍历一遍,就把所有的树都砍了。不用开设L+1个元素的数组了,但是要开设数组将所有区间的起点,终点保存下来,例题3
8、:POJ1006 生理周期,人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的长度不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对每个周期,我们都给出了某一个高峰出现的日子(用高峰日是当年的第几天表示,1月1日算第0天)。现给定一个日子(也用当年的第几天表示),要求你输出从给定日子开始(不包括给定日子)下一次三个高峰落在同一天的时间(用距给定日子的天数来表示)。例如:给定日子为当
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 实习 第二
链接地址:https://www.31ppt.com/p-6482012.html