麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

ACM簡單計(jì)算題-棋盤上的距離

2019-11-14 11:13:00
字體:
供稿:網(wǎng)友

問題描述

國際象棋的棋盤是黑白相間的 8 * 8 的方格,棋子放在格子中間。如下圖所示:

王、后、車、象的走子規(guī)則如下:

王:橫、直、斜都可以走,但每步限走一格。 后:橫、直、斜都可以走,每步格數(shù)不受限制。 車:橫、豎均可以走,不能斜走,格數(shù)不限。 象:只能斜走,格數(shù)不限。

寫一個(gè)程序,給定起始位置和目標(biāo)位置,計(jì)算王、后、車、象從起始位置走到目標(biāo)位置所需的最少步數(shù)。

輸入數(shù)據(jù)

        第一行是測(cè)試數(shù)據(jù)的組數(shù) t( 0 <= t <= 20)。以下每行是一組測(cè)試數(shù)據(jù),每組包括棋盤上的兩個(gè)位置,第一個(gè)是起始位置,第二個(gè)是目標(biāo)位置。位置用"字母-數(shù)字"的形式表示,字母從"a"到"h",數(shù)字從"1"到"8"。

輸出要求

      對(duì)輸入的每組測(cè)試數(shù)據(jù),輸出王、后、車、象所需的最少步數(shù)。如果無法到達(dá),就輸出"Inf".

輸入樣例

2a1 c3f5 f8

輸出樣例

2 1 2 13 1 1 Inf

解題思路

        這個(gè)問題是給定一個(gè)棋盤上的起始位置和終止位置,分別判斷王、后、車、象從起始位置到達(dá)終止位置需要的步數(shù)。首先,王、后、車、象彼此獨(dú)立,分別考慮就可以了。所以這個(gè)題目重點(diǎn)要分析王、后、車、象的行走規(guī)則特點(diǎn),從而推出它們從起點(diǎn)到終點(diǎn)的步數(shù)。我們假設(shè)起始位置與終止位置在水平方向上的距離是 x,它們?cè)谪Q直方向上的距離是 y。       根據(jù)王的行走規(guī)則,他可以橫、直、斜走, 每步限走一格,所以需要的步數(shù)是 min(x,y)+abs(x-y)– 即 x, y 中較小的一個(gè)加上 x 與 y 之差的絕對(duì)值。       根據(jù)后行走的規(guī)則,她可以橫、直、斜走,每步格數(shù)不受限制,所以需要的步數(shù)是 1( x 等于 y 或者 x 等于 0 或者 y 等于 0)或者2(x 不等于 y)。       根據(jù)車行走的規(guī)則,它可以橫、豎走,不能斜走,格數(shù)不限,需要步數(shù)為 1( x 或者 y 等于 0)或者 2(x 和 y 都不等于 0)。       根據(jù)象行走得規(guī)則,它可以斜走,格數(shù)不限。棋盤上的格點(diǎn)可以分為兩類,第一類是它的橫坐標(biāo)和縱坐標(biāo)之差為奇數(shù),第二類是橫縱坐標(biāo)之差為偶數(shù)。對(duì)于只能斜走的象,它每走一步,因?yàn)闄M縱坐標(biāo)增加或減小的絕對(duì)值相等,所以橫坐標(biāo)和縱坐標(biāo)之差的奇偶性無論如何行走都保持不變。因此,上述的第一類點(diǎn)和第二類點(diǎn)不能互相到達(dá)。如果判斷出起始點(diǎn)和終止點(diǎn)分別屬于兩類點(diǎn),就可以得出它們之間需要無數(shù)步的結(jié)論。如果它們屬于同一類點(diǎn),象從起始點(diǎn)走到終止點(diǎn)需要 1( x 的絕對(duì)值等于 y 的絕對(duì)值)或者 2( x 的絕對(duì)值不等于 y 的絕對(duì)值)。

參考程序

#include <iostream>#include <cmath>using namespace std;int main(){	int nCases,i;	cin >> nCases;	for(i=0;i<nCases;i++){		char begin[5],end[5];		cin>>begin>>end;		int x,y;		//用 x 和 y 分別存儲(chǔ)起止位置之間 x 方向和 y 方向上的距離。		x = abs(begin[0]-end[0]);		y = abs(begin[1]-end[1]);		if(!x&&!y){			//起止位置相同,所有棋子都走 0 步。			cout<<"0 0 0 0"<<endl;		}else{			// 王的步數(shù)			if(x<y){				cout<<y;			}else{				cout<<x;			}			// 后的步數(shù)			if(x==y || !x || !y){				cout<<" 1";			}else{				cout<<" 2";			}			// 車的步數(shù)			if(!x || !y){				cout<<" 1";			}else{				cout<<" 2";			}			// 象的步數(shù)			if(abs(x-y)%2 != 0){				cout<<" Inf"<<endl;			}else if(x == y){				cout<<" 1"<<endl;			}else{				cout<<" 2"<<endl;			}		}	} 	return 0;}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产 视频 一区二区 | japan护士性xxxⅹhd | 成人在线视频播放 | 久久久久久久久久综合 | 杏美月av| 国产一级片91 | 免费在线观看毛片 | 免费国产wwwwwww网站 | 欧美韩国一区 | 成人精品久久 | 西川av在线一区二区三区 | 欧美久久久一区二区三区 | 国产日产精品一区二区三区四区 | 黄色特级毛片 | 1级黄色毛片 | 欧美国产日韩在线观看成人 | av手机免费在线观看 | hd极品free性xxx护士人 | 精品国内视频 | 成人18免费观看 | 精品久久久久久久久久久久包黑料 | 久久精品亚洲精品国产欧美kt∨ | 激情小说激情图片激情电影 | v天堂在线视频 | 欧美成人精品一区二区 | av电影网站在线观看 | 久草在线手机视频 | 日本残忍极度灌浣肠视频 | 欧美色大成网站www永久男同 | 亚洲精品成人在线视频 | av电影免费播放 | 亚洲狠狠入 | 亚洲第一成人av | qyl在线视频精品免费观看 | 精品一区二区久久久久久久网精 | 久久国产亚洲视频 | 欧美人与zoxxxx另类9 | 男人天堂免费 | 欧美日韩观看 | 久久久久久免费 | 老女人碰碰在线碰碰视频 |