这是《程序设计引导及在线实践》上的题目,其实题目是北京大学程序在线评测系统里面的题目。

题目描述:

国际象棋的棋盘是黑白相间的 8 * 8 的方格,棋子放在格子中间。
王、后、车、象的走子规则如下:
• 王:横、直、斜都可以走,但每步限走一格。
• 后:横、直、斜都可以走,每步格数不受限制。
• 车:横、竖均可以走,不能斜走,格数不限。
• 象:只能斜走,格数不限。
写一个程序,给定起始位置和目标位置,计算王、后、车、象从起始位置走到目标位置所需的最少步数。 国际象棋的棋盘坐标是以横着a-h,纵1-8来标记的
所以,程序要求大致是这样:
首先输入你要执行的次数比如1,意思是只计算一次
然手输入棋子的起始位置,例如a1
然后输入妻子的终止位置,例如c3
接着分别输出王、后、车和象需要走的最少步数。更具上面的数据,应该输出2 1 2 1 如果无法到达输出Inf
由于上面输入计算次数是1,所以只算一组数据,接着程序推出。

题目分析:

首相我们分析下各个棋子从起始位置到终止位置需要的最少步数应该怎么算,首先是王。不过在这之前我们要先计算起始和终止位置之间横纵分别差了多少步,分别记为x,y
     王横、直、斜都可以走,不过都只能走一步。很明显,如果可以斜着走,效率明显比横、直交替来得快,一步相当与2步。所以x和y的最小值决定了可以斜着走多少步,接着剩下多少步呢?是x和y中最大值减最小值,加到一起其实就是x和y中的最大值。
     接下来是后,后是国际象棋里最犀利的棋子,横、直、斜任意走动。所以对于后来说,不论什么地方最多2步,只要是和自己同排、同列或者对角线的位置,都只要一步。所以只要x == y 或者 x == 0 或者 y == 0都是一步,否则都是2步。
     再者是车,车横、直可以走任意步数。所以在同排或同列走一步,否则都是2步。也就是x == 0 或者 y == 0 是1步,否则是2步
     最后是象,象只能斜着走,所以呢除非在对角线位置,否则无法到达,所以是x == y 一步,否则无法到达。

代码

分析完了,代码应该很好写吧!下面是我写的= =不过呢……我写的乱七八糟的大家不要笑啊。

#include <stdio.h>
#include <math.h>

int main()
{
     int count=0,i = 0;
     int x,y,anwser;                           //x为两点在横坐标上的距离,y为亮点在纵坐标上的距离
     char begin[3] = { 0 };
     char end[3] = { 0 };
     scanf("%d",&count);
     for ( i = 0 ; i < count ; i++ )
     {
      scanf("%s%s",begin,end);
      x = abs(begin[0] - end[0]);
      y = abs(begin[1] - end[1]);
      if(x == 0 && y == 0) printf("0 0 0 0\n");   //起止位置相同,所有棋子都走 0 步。

anwser = ((x > y)? x : y) ;           //王需要的步数
      printf ("%d ",anwser);

if (x == 0 || y == 0 || x == y)       //后需要的步数
           printf ("1 ");
      else
        printf ("2 ");

if ( x == 0 || y == 0 )               //车需要的步数
           printf ("1 ");
      else 
           printf ("2 ");

if (x == y)                           //象需要的步数
           printf ("1\n");
      else 
           printf ("Inf\n");
     }
     return 0;
}

最后

昨天晚上没事顺手写的………………还有别的题目也挺好玩,下次摘几个过来

转载于:https://www.cnblogs.com/bananapeel/archive/2011/06/02/2068814.html

没事做做题之棋盘上的距离相关推荐

  1. 做算法题时的一些小技巧

    做算法题时的一些小技巧 技巧一: 在用C++做算法题时,我们会觉的cin,cout比scanf,printf使用起来更加的方便,不用指定输入输出格式. 但是cin,cout的运行时间比scanf,pr ...

  2. c语言题-牛牛做水题

    牛牛喜欢做题.但他不喜欢做难题,喜欢做水题. 对于一个题号为的题而言,题目的难度为的所有因子之和除以.牛牛认为难度小于2的题目都是水题. 例如: 编号为25的题目,其难度为(1+5+25)/25=1. ...

  3. 投篮c语言程序设计,教师招聘笔试体育之篮球必做20题(一)

    教师招聘笔试体育之篮球必做20题(一) 一.单项选择题 1.篮球是最基本的区域联防战术是( )站位. A.2-1-2 B.2-3 C.3-2 D.1-3-1 2.国际篮球规定,球员的球衣号码必须是从( ...

  4. java 2017腾讯面试题_腾讯2017刁难面试题,是不是大神就看你会做几题

    原标题:腾讯2017刁难面试题,是不是大神就看你会做几题 一.今日头条2017笔试题(决策问题) 现在有两堆石子,小今与小条玩游戏,2个人都足够聪明,两个人规定:每次每人只能从其中一堆中取走1个或2个 ...

  5. 由浅入深学java iso_由浅入深学Java:基础、进阶与必做260题 PDF扫描版[47MB]

    由浅入深学Java:基础.进阶与必做260题讲解了Java方方面面的知识,全书共分为4篇共28章,第1篇从最基本的JDK安装讲起,包括基本语法与数据类型.数组.字符串.程序控制语句.面向对象编程.继承 ...

  6. 由浅入深学java pdf_由浅入深学Java:基础、进阶与必做260题 PDF_IT教程网

    资源名称:由浅入深学Java:基础.进阶与必做260题 PDF 第1篇  语言基础篇 第1章  Java入门(教学视频:18分钟) 1.1  Java简介 1.2  Java的特点 1.3  JDK的 ...

  7. 自考软考需要做什么题,自考软考真题哪里有呢?

    除了可以自我提升,软考还能提供各式各样的帮助,包括但不限于北上广落户.孩子上学,人才引进.对于工作的人,报考培训班是不太现实的,时间没有那么自由,很多人会选择自考软考,那么自考软考需要做什么题呢?自考 ...

  8. 投资银行业务过关必做1500题

    品相描述: 本商品为电子资料(非纸质书,无需邮寄,不支持打印),购买成功后客服将人工发送激活密码(如果长时间没收到可主动联系店铺客服获取).由于软件的特殊性,本商品不支持退换货,请购买前先下载试用,确 ...

  9. 将c语言程序转化成伪代码,「第9篇」「做编程题方法3」「来点伪代码」

    学C语言是痛苦的,用C语言做编程题更加痛苦.这几天我看很多同学拿到一道编程题就在问"这道题怎么做?"."没思路呀没思路"."求大神帮忙看看" ...

最新文章

  1. 深度学习时间序列预测:LSTM算法构建时间序列单变量模型预测空气质量(PM2.5)+代码实战
  2. maven可选依赖(Optional Dependencies)和依赖排除(Dependency Exclusions)
  3. Eclipse上GIT插件EGIT使用手册之五_查看历史记录
  4. dml语句包括哪些_聊聊MySQL基本操作DDL,DML,DQL,DCL
  5. 第四十三期:2020年企业面临的20大数据安全风险
  6. idea maven创建java项目_新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目(图文教程)...
  7. 解决tomcat中temp文件夹出现项目的副本的情况
  8. SOTIF预期功能安全工作流程
  9. Servlet常用操作(基础)
  10. 基线_Origin入门教程(九):扣除基线常用小妙招
  11. 深度学习软件资源列表
  12. c语言公路竖曲线要素代码,竖曲线要素
  13. Android应用开发详解
  14. 斐波那契数列_详解(C语言)
  15. 面试经验|华为二面分享 真难ε=(´ο`*)))唉
  16. 对话周傲英:数据库人的切肤之痛
  17. 百度云c++语言模拟器,Android模拟器中运行纯C++程序(一)
  18. 启动tomcat卡在“信息: Destroying ProtocolHandler”
  19. 邮件撤回成功后对方还能看到吗?163邮箱能群发邮件吗?
  20. 幻方萤火 | 高速读写文件系统 3FS

热门文章

  1. 【学习笔记】深入理解js原型和闭包(5)——instanceof
  2. springcloud 之 bus 消息总线
  3. 2017-9-11-颜色空间
  4. UITextField基础
  5. VC中TXT文件的存取
  6. 解决 NDK is missing a “platforms“ directory.
  7. LinkedList 使用巩固及图解
  8. 算法---------简化路径(Java版本)
  9. 解决编译失败 Attribute meta-data#android.support.VERSION@value value=(26.0
  10. android shape.xml 文件使用