编程介的小学生 2017-09-16 16:42 采纳率: 0.2%
浏览 813
已采纳

PICTURE PUZZLE

Description

One type of picture puzzle consists of nine square pieces, each of which has one-half of a picture on each edge. The pictures on each piece are either the left or the right half of one of four pictures designated B, C, K and P for this problem. The picture halves are aligned along the edges so that, if the left half is on one piece and the right on another, when the two pieces are aligned the pictures match. The purpose of the puzzle is to place the nine pieces into a three by three grid so that all the pictures along the adjacent edges match. Note that some of the pieces may need to be rotated to match.


Write a program to solve one or more instances of the puzzle.
Input

The input consists of a sequence of problems. Each problem begins with the problem number on a line by itself.The end of the data is indicated by a problem number of 0. Following the problem number line will be nine lines describing the pieces. Each of these lines begins with the piece number (1 through 9) followed by the picture on the top, right side, bottom and left side of the piece, in that order and separated by spaces. The picture halves are BL,BR, CL, CR, KL, KR, PL and PR. BL matches with BR, CL matches with CR, KL matches with KR and PL matches with PR. (For example, BL is the left half and BR is the right half of the picture designated B)
Output

The output for each problem is to be: A line with the problem number followed by a colon (':'). If the problem has no solution, the next line should be "No Solution". If there is a solution, that solution should be displayed as follows:
Since any solution may be rotated 90, 180 or 270 degrees to obtain another, the center square should be in the orientation given in the input and other squares aligned accordingly. Each row of pieces is displayed on three lines with a blank line between rows. The format for a single piece is:

 <3 spaces><2 char top picture><3 spaces> 
<2 char left picture><sp><1 digit piece number><sp><2 char right picture><sp> 
<3 spaces><2 char bottom picture><3 spaces> 

A single blank line should follow the output for each problem.
Sample Input

1
1 BR KR PL CR
2 CL PR BL KR
3 KR PR CR BL
4 PL KR BL CL
5 PL BR CL KR
6 PR CL BR PL
7 CR KL BL PR
8 BL CR KL PL
9 KL CL PR BL
2
1 PR PR BL CR
2 BR KL CR PR
3 CR BL PL KR
4 KL PL BL CL
5 BR CR PL KR
6 KL BR PL CR
7 CL PL BL KR
8 KR KL CR BL
9 CR KL PR BL
3
1 PL KL CL BR
2 PL CR KL BL
3 PR BR CL KR
4 CR PL BR KR
5 PR CL BR KR
6 BL KL CR PR
7 PL BL CL KR
8 PR CR KL BR
9 KL BL CL PL
0
Sample Output

1:
CL KR KL

PR 6 BR BL 2 CL CR 7 BL
PL PR PR

PR PL PL

KR 3 CR CL 4 KR KL 8 BL
BL BL CR

BR BR CL

PL 5 CL CR 1 KR KL 9 PR
KR PL BL

2:
No Solution

3:
KL BR BL

BL 6 CR CL 5 KR KL 9 CL
PR PR PL

PL PL PR

KR 7 BL BR 1 KL KR 3 BR
CL CL CL

CR CR CR

PL 2 KL KR 4 PL PR 8 KL
BL BR BR

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-09-30 13:38
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 (标签-matlab)
  • ¥15 Marscode IDE 如何预览新建的 HTML 文件
  • ¥15 K8S部署二进制集群过程中calico一直报错
  • ¥15 java python或者任何一种编程语言复刻一个网页
  • ¥20 如何通过代码传输视频到亚马逊平台
  • ¥15 php查询mysql数据库并显示至下拉列表中
  • ¥15 freertos下使用外部中断失效
  • ¥15 输入的char字符转为int类型,不是对应的ascall码,如何才能使之转换为对应ascall码?或者使输入的char字符可以正常与其他字符比较?
  • ¥15 devserver配置完 启动服务 无法访问static上的资源
  • ¥15 解决websocket跟c#客户端通信