编程介的小学生 2017-03-08 18:25 采纳率: 20.5%
浏览 758
已采纳

Deeper Blue

Introduction

When trying to avoid conflict and maintain peace, a good strategy is to remove the elements that cause the most trouble. IBM is using its Deep Blue machine to try to study this strategy by modeling it with a game of chess. IBM needs a program to find the minimum number of chess pieces that must be removed from a chessboard in order for none of the pieces to be attacking each other.

All pieces will have the standard attack movements for that chess piece.

King - Can attack the adjacent space in any direction. Up, down, left, right and diagonally.

Queen - Can attack any number of spaces in any direction. Up, down, left, right and diagonally.

Bishop - Can attack any number of spaces diagonally.

Rook - Can attack any number of spaces up, down, left, or right but not diagonally.

Pawns - There won't be any pawns.

Knight - Can attack with their usual 'L' shaped movement. Up twice and right once, up once and left twice, etc... Here is a diagram, which demonstrates the movement of a knight.


| | |*| |*| | |

| |*| | | |*| |

| | | |N| | | |

| |*| | | |*| |

| | |*| |*| | |

N = Knight

  • = Square that the knight can attack

Input

Input to this problem will consist of a (non-empty) series of up to 100 data sets. Each data set will be formatted according to the following description, and there will be no blank lines separating data sets. The maximum dimensions of the board are 10 squares wide by 10 squares high. The maximum number of chess pieces that will start out on the board is 15.

A single data set has 5 components:

Start line - A single line, "START"

Board Width (# of columns) - A single line containing a positive integer, w, indicating the number of squares across the width of the board where 1 <= w <= 10.

Board Height (# of rows) - A single line containing a positive integer, h, indicating the number of squares that dictate the height of the board, where 1 <= h <= 10.

Board Layout - h lines, each corresponding to a row of the board. The first line corresponds to the first row, the second line to the second row, and so on. Each row consists of a space-separated list of single letters, each representing the contents of the corresponding square on the board according to the following list:

K - King
Q - Queen
R - Rook
B - Bishop
N - Knight
E - Empty Square

End line - A single line, "END"

Output

For each data set, there will be exactly one output set, and there will be no blank lines separating output sets.

A single output set consists of a single line, "Minimum Number of Pieces to be removed: X", where X is the minimum number of pieces that must be removed from the board such that none of the remaining pieces are attacking any other remaining piece.

Sample Input

START
3
3
K E K
E Q E
K E K
END
START
8
8
E E E E E E E E
E B E K E E N E
E E E E N E E E
E E E E E E E R
B E Q E E E E E
E E E E E Q E E
E E E E E B E E
E B E R E E E E
END

Sample Output

Minimum Number of Pieces to be removed: 1
Minimum Number of Pieces to be removed: 5

  • 写回答

2条回答 默认 最新

  • threenewbee 2017-03-14 09:23
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?