棋盘覆盖

三.棋盘覆盖的具体实现代码

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 int num = 0;
 5 int Matrix[100][100];
 6 void chessBoard(int tr, int tc, int dr, int dc, int size);
 7 int main()
 8 {
 9     int size,r,c,row,col;
10    printf("请输入棋盘的行列号");
11     scanf("%d",&size);
12     printf("请输入特殊方格的行列号");
13     scanf("%d %d",&row,&col);
14     chessBoard(0,0,row,col,size);
15 
16     for (r = 0; r < size; r++)
17     {
18         for (c = 0; c < size; c++)
19         {
20             printf("%2d ",Matrix[r][c]);
21         }
22         printf("\n");
23     }
24 
25     return 0;
26 }
27 
28 void chessBoard(int tr, int tc, int dr, int dc, int size)
29 {
30 
31     int s,t;
32     if (size==1) return;
33     s = size/2;    //分割棋盘 
34     t = ++num;      //L型骨牌号 
35     if (dr < tr + s && dc < tc +s)                //覆盖左上角子棋盘 
36     {
37         //特殊方格在此棋盘中 
38         chessBoard(tr,tc,dr,dc,s);
39     }
40     else            //此棋盘中无特殊方格 
41     {
42         //用t号L型骨牌覆盖右下角 
43         Matrix[tr+s-1][tc+s-1] = t;
44         //覆盖其余方格 
45         chessBoard(tr,tc,tr+s-1,tc+s-1,s);
46     }
47     //覆盖右上角子棋盘 
48     if (dr < tr + s && dc >= tc + s )           // 
49     {
50         //特殊方格在此棋盘中 
51         chessBoard(tr,tc+s,dr,dc,s);
52     }
53     else      //此棋盘中无特殊方格 
54     {
55         //用t号L型骨牌覆盖左下角 
56         Matrix[tr+s-1][tc+s] = t;
57         //覆盖其余方格 
58         chessBoard(tr,tc+s,tr+s-1,tc+s,s);
59     }
60      //覆盖左下角子棋盘 
61     if (dr >= tr + s && dc < tc + s)        
62     {
63         //特殊方格在此棋盘中 
64         chessBoard(tr+s,tc,dr,dc,s);
65     } 
66     else
67     {
68         //用t号L型骨牌覆盖右上角
69         Matrix[tr+s][tc+s-1] = t;
70         //覆盖其余方格 
71         chessBoard(tr+s,tc,tr+s,tc+s-1,s);
72     }
73       //覆盖右下角子棋盘 
74     if (dr >= tr + s && dc >= tc + s)
75     {
76           //特殊方格在此棋盘中 
77         chessBoard(tr+s,tc+s,dr,dc,s);
78     } 
79     else
80     {
81         //用t号L型骨牌覆盖左上角
82         Matrix[tr+s][tc+s] = t;
83         //覆盖其余方格 
84         chessBoard(tr+s,tc+s,tr+s,tc+s,s);
85     }
86 
87 }
posted @ 2021-04-06 17:17  Gurad-your-heart  阅读(77)  评论(0)    收藏  举报