算法与程序实践1(简单计算)(2)
}
for(i=1;i<=nCase;i++) {
scanf(\ if(nFeet%2 != 0) printf(\ else if(nFeet%4 != 0)
printf(\ else
printf(\}
return 0;
解题思路:
这个问题可以描述成任给一个整数N,如果N是奇数,输出0 0,否则如果N是4的倍数,输出N / 4,N / 2,如果N不是4的倍数,输出N/4+1,N/2 。这是一个一般的计算题,只要实现相应的判断和输出代码就可以了。题目中说明了输入整数在一个比较小的范围内,所以只需要考虑整数运算就可以了。
注意事项:
这里考察数学计算,出错有一下几种情况:
1) 因为对问题分析不清楚,给出了错误的计算公式;
2) 不用数学方法,而试图用枚举所有鸡和兔的个数来求解此题,造成超时; 3) 试图把所有输入先存储起来,再输出,开的数组太小,因数组越界产生运行错; 4) 在每行输出末尾缺少换行符;
5) 对输入输出语法不熟悉导致死循环或语法错。
CS4:棋盘上的距离
(来源:poj.grids.cn 1657)
问题描述:国际象棋的棋盘是黑白相间的8 * 8 的方格,棋子放在格子中间。如图1-1 所示:
5
图1-1 国际象棋棋盘
王、后、车、象的走子规则如下:
王:横、直、斜都可以走,但每步限走一格。 后:横、直、斜都可以走,每步格数不受限制。 车:横、竖均可以走,不能斜走,格数不限。 象:只能斜走,格数不限。
写一个程序,给定起始位置和目标位置,计算王、后、车、象从起始位置走到目标位置所需的最少步数。 输入:
第一行是测试数据的组数t(0 <= t <= 20 )。以下每行是一组测试数据,每组包括棋盘上的两个位置,第一个是起始位置,第二个是目标位置。位置用\字母-数字\的形式表示,字母从“a”到“h”,数字从“1” 到“8” 。 输出要求:
对输入的每组测试数据,输出王、后、车、象所需的最少步数。如果无法到达,就输出“Inf”。 输入样例 2 a1 c3 f5 f8 输出样例 2 1 2 1 3 1 1 Inf
解题思路
这个问题是给定一个棋盘上的起始位置和终止位置,分别判断王、后、车、象从起始位置到达终止位置需要的步数。首先,王、后、车、象彼此独立,分别考虑就可以了。所以这个题目重点要分析王、后、车、象的行走规则特点,从而推出它们从起点到终点的步数。
6
我们假设起始位置与终止位置在水平方向上的距离是x,它们在竖直方向上的距离是y。 根据王的行走规则,它可以横、直、斜走,每步限走一格,所以需要的步数是min(x,y)+abs(x-y) ,即x,y 中较小的一个加上x 与y 之差的绝对值。
根据后行走的规则,她可以横、直、斜走,每步格数不受限制,所以需要的步数是1(x 等于y 或者 x 等于0 或者 y 等于0)或者2(x不等于y)。
根据车行走的规则,它可以横、竖走,不能斜走,格数不限,需要步数为1 (x 或者y 等于0)或者2(x 和y 都不等于0)。
根据象行走得规则,它可以斜走,格数不限。棋盘上的格点可以分为两类,第一类是它的横坐标和纵坐标之差为奇数,第二类是横纵坐标之差为偶数。对于只能斜走的象,它每走一步,因为横纵坐标增加或减小的绝对值相等,所以横坐标和纵坐标之差的奇偶性无论如何行走都保持不变。因此,上述的第一类点和第二类点不能互相到达。如果判断出起始点和终止点分别属于两类点,就可以得出它们之间需要无数步的结论。如果它们属于同一类点,象从起始点走到终止点需要1(x 的绝对值等于y 的绝对值)或者2(x 的绝对值不等于y 的绝对值)。
CS5:校门外的树木
(来源:poj.grids.cn 2808)
问题描述:
某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,??,L,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。 输入:
输入的第一行有两个整数L(1 <= L <= 10000 )和 M(1 <=M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。 输出要求:
输出包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。
输入样例:
500 3 150 300 100 200 470 471
输出样例:
298
7
解题思路
这个问题可以概括为输入一个大的整数闭区间,及一些可能互相重叠的在该大区间内的小的整数闭区间。在大的整数闭区间内去除这些小的整数闭区间,问之后剩下的可能不连续的整数区间内有多少个整数。这个题目给出的范围是大的区间在1~10000以内,要去除的小的区间的个数是100个以内。因为规模较小,所以可以考虑用空间换时间,用一个大数组来模拟这些区间,数组中的每个数表示区间上的一个数。例如,如果输入L的长度是500,则据题意可知最初有501棵树。我们就用一个501个元素的数组来模拟这501棵树,数组的下标分别代表从1到501棵树,数组元素的值代表这棵树是否被一走。最初这些树都没有被移走,所以所有数组元素的值都用true来表示。每当输入一个小区间,就将这个区间对应的树全部移走,即将这个区间对应的数组元素下标指示的元素的值置成false。如果有多个区间对应同一个数组元素,会导致多次将某个数组元素置成false。不过这并不影响结果的正确性。当所有小区间输入完成,我们可以数一下剩下的仍旧为true的元素的个数,就可以得到最后剩下的树的数目。当然如果最开始输入的区间不是500,则我们使用的数组大小就不是500。因为题目给出的上限是10000,所以我们可以定义一个大小是10001个元素的数组,这样对所有输入都是够用的。 …… 此处隐藏:836字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [学前教育]MC9S12XS256RMV1 xs128芯片手册4
- [学前教育]安东尼语录经典语录
- [学前教育]e级gps控制测量技术设计书
- [学前教育]苏教版2022-2022学年八年级下学期期末
- [学前教育]装修公司推广 营销
- [学前教育]家政服务合同(完整版)
- [学前教育]湖北省2016届高三联考语文试题
- [学前教育]爱立信无涯学习系统LTE题库1-LTE基础知
- [学前教育]揭秘大众柴油车作弊软件原理
- [学前教育]人才流失原因及对策分析
- [学前教育]房屋建筑施工工程劳务分包合同
- [学前教育]国际贸易实务试卷A卷09.6
- [学前教育]校园废品回收活动计划方案书范文格
- [学前教育]电大成本会计试题及答案
- [学前教育]大学物理实验 华南理工出版社 绪论答案
- [学前教育]爱丁堡产后抑郁量表
- [学前教育]液压冲击的危害、产生原因与防止方法(
- [学前教育]学生工作总结高一学生期中考试总结_020
- [学前教育]人民医院医疗废物管理规章制度大全
- [学前教育]阳光维生素的巨大抗癌潜能阅读题答案.d
- 马云在云锋基金江苏论坛闭幕式的发言
- 试论小学体育教育中的心理健康教育-教
- 语文A版一年级下册《语文乐园一》教学
- 2021四川大学物理化学考研真题经验参考
- [人教A版]2015-2016学年高中数学 第二
- 终端网点销售返利协议书
- 江苏省2015年眼科学主治医师青光眼考试
- 2017年部编人教版八年级语文上册教案
- 十一中学七年级英语上册Unit7Howmuchar
- 以赛促教的创新性实验教学机制建设实践
- 平凉市崆峒区2015七年级下生物期末试题
- 琶洲(地块五)A、B塔楼1、2#塔吊基础
- 一级医院工作制度与人员岗位职责
- 2018北京西城区高三二模理科数学试题及
- 炒股密码线技术 - 图文
- 职高学生生涯发展辅导教案
- 语文人教版四年级上册8 世界地图引出的
- 最新最新人教版二年级上册全册数学教案
- 2017高考英语全国2卷精彩试题(有问题
- 普通心理学笔记




