5-15 智力拼图问题
问题描述
设有 12 个平面图形如图所示。每个图形的形状互不相同,但它们都是由 5 个大小相同的正方形组成。下图中 12 个图形拼接成一个 6×10 的矩形。试设计一个算法,计算出用这 12 个图形拼接成给定矩形的拼接方案。
对于给定矩形,计算用上述 12 个图形拼接成给定矩形的一个拼接方案。拼接方案中每个图形可以经过旋转或翻转后进行拼接,但要求使用 12 个图形中每个图形恰好 1 次。
数据输入:
第一行有 2 个正整数 m 和 n,表示给定的矩形是一个 m×n m × n 矩形。
结果输出:
每行 n 个字符,共 m 行。给定的 12 个图形的编号如下。如果不存在所要求的拼接方案,输出“No solution!”。
Java
package Chapter5HuiSuFa;
import java.util.Arrays;
import java.util.Scanner;
public class ZhiLiPingTu {
private static class pp{
char[][] aa = new char[5][5];
}
private static class fboard{
char[] pos = new char[60];
char[] mark = new char[12];
}
private static char[][] pc00 = {
{
1,1,1,0,0},{
1,0,0,0,0},{
1,0,0,0,0},{
0,0,0,0,0},{
0,0,0,0,0}};
private static char[][] pc01 = {
{
2,2,0,0,0},{
2,0,0,0,0},{
2,2,0,0,0},{
0,0,0,0,0},{
0,0,0,0,0}};
private static char[][] pc02 = {
{
3,3,0,0,0},{
3,3,0,0,0},{
3,0,0,0,0},{
0,0,0,0,0},{
0,0,0,0,0}};
private static char[][] pc03 = {
{
4,4,0,0,0},{
4,0,0,0,0