数学建模社区-数学中国

标题: 200908网友求助《棋盘覆盖问题》 [打印本页]

作者: xinzhiyong    时间: 2009-8-9 16:42
标题: 200908网友求助《棋盘覆盖问题》
本帖最后由 为你奋斗 于 2009-12-3 16:03 编辑 在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2L型骨牌不得重叠覆盖

这是编写的程序
%残缺棋盘
board=zeros(100,100);
n=4;
size=2^n;
amount=0;
[board,amount]=cover(1,1,2,5,board,size,amount);
board(1:size,1:size)
function [board,amount]=cover(i,j,k,l,board,size,amount)%(i,j)为左上角 (k,l)残缺 size为规模 amount为片数
if size==1

return

end
amount=amount+1;
size=size/2;
if (k<size+i)&(l<size+j)%残缺位于左上棋盘

board(size+i-1,size+j)=amount;board(size+i,size+j)=amount;board(size+i,size+j-1)=amount;%放置
[board,amount]=cover(i,j,k,l,board,size,amount);[board,amount]=cover(i,j+size,size+i-1,j+size,board,size,amount);
[board,amount]=cover(size+i,size+j,size+i,size+j,board,size,amount);[board,amount]=cover(i+size,j,i+size,j+size-1,board,size,amount);
elseif (k>=size+i)&(l<size+j)%残缺位于左下棋盘
board(size+i-1,size+j)=amount;board(size+i,size+j)=amount;board(size+i-1,size+j-1)=amount;%放置
[board,amount]=cover(i+size,j,k,l,board,size,amount);[board,amount]=cover(i,j+size,size+i-1,j+size,board,size,amount);
[board,amount]=cover(size+i,size+j,size+i,size+j,board,size,amount);[board,amount]=cover(i,j,i+size-1,j+size-1,board,size,amount);
elseif (k<size+i)&(l>=size+j)%残缺位于右上棋盘
board(size+i,size+j-1)=amount;board(size+i,size+j)=amount;board(size+i-1,size+j-1)=amount;%放置
[board,amount]=cover(i,j+size,k,l,board,size,amount);[board,amount]=cover(i,j,i+size-1,j+size-1,board,size,amount);
[board,amount]=cover(size+i,size+j,size+i,size+j,board,size,amount);[board,amount]=cover(i+size,j,i+size,j+size-1,board,size,amount);
elseif (k>=size+i)&(l>=size+j)%残缺位于右下棋盘
board(size+i,size+j-1)=amount;board(size+i-1,size+j)=amount;board(size+i-1,size+j-1)=amount;%放置
[board,amount]=cover(size+i,size+j,k,l,board,size,amount);[board,amount]=cover(i,j+size,size+i-1,j+size,board,size,amount);
[board,amount]=cover(i,j,i+size-1,j+size-1,board,size,amount);[board,amount]=cover(i+size,j,i+size,j+size-1,board,size,amount);
end
end
ns =
请问一下这个结果是什么意思呢?

Columns 1 through 13



11
11
10
10
4
4
5
5
42
42
41
41
33


11
8
8
10
0
4
3
5
42
39
39
41
33


12
8
9
9
7
3
3
6
43
39
40
40
30


12
12
9
2
7
7
6
6
43
43
40
23
23


20
20
19
2
2
14
15
15
28
28
26
26
23


20
18
19
19
14
14
13
15
28
24
24
26
35


22
18
18
21
17
13
13
16
25
25
24
27
38


22
22
21
21
17
17
16
16
1
25
27
27
38


74
74
73
73
68
68

67
1
1
46
47
47
54


74
71
71
73
68
66
67
67
46
46
45
47
54


75
71
72
72
70
66
66
69
49
45
45
48
51


75
75
72
65
70
70
69
69
49

49
48
48
44


83
83
82
65
65
77
78
78
62
62
61
44
44


83
81
82
82
77
77
76
78
62
60
61
61
56


85
81
81
84
80
76
76
79
64
60
60
63
59


85
85
84
84
80
80
79
79
64
64
63
63
59



Columns 14 through 16



33
31
31


29
29
31


30
29
32


30
32
32


35
36
36


35
34
36


34
34
37


38
37
37


54
52
52


50
50
52


51
50
53


51
53
53


56
57
57


56
55
57


55
55
58


59
58
58

作者: zhenenwang    时间: 2012-8-24 22:10
顶顶顶顶顶顶顶




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5