- 在线时间
- 0 小时
- 最后登录
- 2010-10-16
- 注册时间
- 2009-2-26
- 听众数
- 2
- 收听数
- 0
- 能力
- 0 分
- 体力
- 31 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 72
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 122
- 主题
- 20
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   70.53% 该用户从未签到
 |
本帖最后由 为你奋斗 于 2009-12-3 16:03 编辑
在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖
这是编写的程序 %残缺棋盘 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 |
zan
|