Poj 1659 Distance on Chessboard(国际象棋的走子规则)
一、Description
王、后、车、象的走子规则如下:
- 王:横、直、斜都可以走,但每步限走一格。
- 后:横、直、斜都可以走,每步格数不受限制。
- 车:横、竖均可以走,不能斜走,格数不限。
- 象:只能斜走,格数不限。
写一个程序,给定起始位置和目标位置,计算王、后、车、象从起始位置走到目标位置所需的最少步数。
Input
Output
二、题解
目标:输出王、后、车、象从给定起点到终点坐标所需的最少步数。
方法:逐个分析。
王:输出横坐标差的绝对值与纵坐标差的绝对值的最大值。这个最大值是横坐标或纵坐标的最大差值,由于走一个斜着走一个相当于走一个横格和一个竖格。所以如果横格和竖格差的最小值可以有斜格代替,剩下的就走横格或竖格。
后:如果在同一斜线上或者同一行或者同一列上输出1,否则后可以通过两步到达任何坐标,输出2。
车:如果在同一行上或者同一列上则输出1,否则车可以通过两步到达任何坐标,输出2。
象:由于黑象只能走黑格,白象只走白格。所以如果起点与终点的颜色不同输出Inf,如果在同一斜线上则一步到达,输出1,否则任何坐标都可以通过一个中转到达 ,输出2。
注意:要提前分析起始和终点坐标相同的情况。如果相同则输出四个0,否则按上面的方法求。
三、Java代码
import java.util.Scanner;
public class Main {
static int k,q,c;
static String e;
public static void King(int x1, int y1, int x2, int y2){
int x = Math.abs(x1 - x2);
int y = Math.abs(y1 - y2);
if(x > y)
k= x;
else
k= y;
}
public static void Queen(int x1, int y1, int x2, int y2){
if(x1 == x2 || y1 == y2|| directCon(x1, y1, x2, y2))
q= 1;
else
q= 2;
}
public static void Car(int x1, int y1, int x2, int y2){
if(x1 == x2 || y1 == y2)
c= 1;
else
c= 2;
}
public static void Elephant(int x1, int y1, int x2, int y2){
e="2";
if((x1 + y1) % 2 != (x2 + y2) % 2)
e="Inf";
if(directCon(x1, y1, x2, y2) == true)
e= "1";
}
public static boolean directCon(int x1, int y1, int x2, int y2){
if(Math.abs(x1-x2)==Math.abs(y1-y2))
return true;
return false;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String[] s=new String[2];
int x1,y1,x2,y2;
int n=sc.nextInt();
while(n--!=0){
s[0]=sc.next();
s[1]=sc.next();
x1=s[0].charAt(0)-96;
y1=s[0].charAt(1)-48;
x2=s[1].charAt(0)-96;
y2=s[1].charAt(1)-48;
if(x1==x2 && y1==y2){
System.out.println(0+" "+0+" "+0+" "+0);
}else{
King(x1, y1, x2, y2);
Queen(x1, y1, x2, y2);
Car(x1, y1, x2, y2);
Elephant(x1, y1, x2, y2);
System.out.println(k+" "+q+" "+c+" "+e);
}
}
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
Poj 1659 Distance on Chessboard(国际象棋的走子规则)的更多相关文章
- POJ 1657 Distance on Chessboard 简单的计算问题
Distance on Chessboard Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 23096 Accepted ...
- OpenJudge/Poj 1657 Distance on Chessboard
1.链接地址: http://bailian.openjudge.cn/practice/1657 http://poj.org/problem?id=1657 2.题目: 总时间限制: 1000ms ...
- POJ1657 Distance on chessboard
Distance on Chessboard Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25623 Accepted ...
- POJ 1986 Distance Queries / UESTC 256 Distance Queries / CJOJ 1129 【USACO】距离咨询(最近公共祖先)
POJ 1986 Distance Queries / UESTC 256 Distance Queries / CJOJ 1129 [USACO]距离咨询(最近公共祖先) Description F ...
- 1657 Distance on Chessboard(简单计算题)
描述 国际象棋的棋盘是黑白相间的8 * 8的方格,棋子放在格子中间.如下图所示:王.后.车.象的走子规则如下: 王:横.直.斜都可以走,但每步限走一格. 后:横.直.斜都可以走,每步格数不受限制. 车 ...
- POJ.1986 Distance Queries ( LCA 倍增 )
POJ.1986 Distance Queries ( LCA 倍增 ) 题意分析 给出一个N个点,M条边的信息(u,v,w),表示树上u-v有一条边,边权为w,接下来有k个询问,每个询问为(a,b) ...
- poj 1659 Frogs' Neighborhood 度序列可图化 贪心
题意: 对一个无向图给出一个度序列,问他是否可简单图化. 分析: 依据Havel定理,直接贪心就可以. 代码: //poj 1659 //sep9 #include <iostream> ...
- POJ 1986 Distance Queries LCA两点距离树
标题来源:POJ 1986 Distance Queries 意甲冠军:给你一棵树 q第二次查询 每次你问两个点之间的距离 思路:对于2点 u v dis(u,v) = dis(root,u) + d ...
- poj 1659 Frog's Neighborhood
未名湖附近共有N个大小湖泊L1, L2, -, Ln(其中包括未名湖),每个湖泊Li里住着一只青蛙Fi(1 ≤ i ≤ N).如果湖泊Li和Lj之间有水路相连,则青蛙Fi和Fj互称为邻居.现在已知每只 ...
随机推荐
- 学习Sharding JDBC 从入门到出门-02:源码揣测
sjdbc有读写分离的功能,要使用这个功能,在创建数据源对象是要使用类:MasterSlaveDataSource,并且设置主备数据源和数据库名称 这个对象有下面的属性: name:数据库的名称 ma ...
- iOS9 3D Touch使用
http://www.cnblogs.com/zhanglinfeng/p/5133939.html
- Python菜鸟之路:Python基础-类(2)——成员、成员修饰符、异常及其他
三大成员 在Python的面向对象中,主要包括三大成员:字段.方法.属性 字段 类成员的字段又可分为普通字段.静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同,代码示例如下: ...
- shell脚本调试运行
1.在命令行提供参数:$sh -x script.sh 但是有的shell脚本只能用 ./xxx.sh的方式运行,不能用sh命令解析执行.则此方法会报错.2.脚本开头提供参数:#!/bin/sh ...
- Spring mvc 与 strust
1. 机制:spring mvc的入口是servlet,而struts2是filter 2. 性能:spring会稍微比struts快.spring mvc是基于方法,单例(servlet也是单例): ...
- linux c编程:线程互斥二 线程死锁
死锁就是不同的程序在运行时因为某种原因发生了阻塞,进而导致程序不能正常运行.阻塞程序的原因通常都是由于程序没有正确使用临界资源. 我们举个日常生活中的例子来比喻死锁.我们把马路上行驶的汽车比作运行着的 ...
- C#BackgroundWorker组件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- Android shape制作圆角、虚线、渐变
xml控件配置属性 android:background="@drawable/shape" 标签 corners ----------圆角 gradient ---------- ...
- Storm,Spark和Samza
http://www.csdn.net/article/2015-03-09/2824135 Apache Storm 在Storm中,先要设计一个用于实时计算的图状结构,我们称之为拓扑(topolo ...
- [原创]java WEB学习笔记09:ServletResponse & HttpServletResponse
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...