?? 12-4.c
字號:
#include "stdio.h"
#define Board_Max 100
int Board[Board_Max][Board_Max];
int tile=0;
void SetBoard(int tr, int tc, int dr, int dc, int size)
{// 覆蓋殘缺棋盤
int t,s;
if (size ==1) return;
t = tile++, // 所使用的三格板的數目
s = size/2; // 象限大小
//覆蓋左上象限
if(dr<tr+s&&dc<tc+s)
// 殘缺方格位于本象限
SetBoard(tr,tc,dr,dc,s);
else {// 本象限中沒有殘缺方格,把三格板t 放在右下角
Board[tr + s - 1][tc + s - 1] = t;
// 覆蓋其余部分
SetBoard(tr,tc,tr+s-1,tc+s-1,s);
}
//覆蓋右上象限
if(dr < tr + s && dc >= tc + s)
// 殘缺方格位于本象限
SetBoard(tr,tc+s,dr,dc,s);
else {// 本象限中沒有殘缺方格
// 把三格板t 放在左下角
Board[tr + s - 1][tc + s] = t;
// 覆蓋其余部分
SetBoard(tr,tc+s,tr+s-1,tc+s,s);
}
//覆蓋左下象限
if (dr >= tr + s && dc < tc + s)
// 殘缺方格位于本象限
SetBoard(tr+s, tc, dr, dc, s);
else {// 把三格板t 放在右上角
Board[tr + s][tc + s - 1] = t;
// 覆蓋其余部分
SetBoard(tr+s, tc, tr+s, tc+s-1, s);
}
// 覆蓋右下象限
if (dr >= tr + s && dc >= tc + s)
// 殘缺方格位于本象限
SetBoard(tr+s, tc+s, dr, dc, s);
else {// 把三格板t 放在左上角
Board[tr+s][tc+s] = t;
// 覆蓋其余部分
SetBoard(tr+s, tc+s, tr+s, tc+s, s);
}
}
void PrintBoard(int size)
{
int i,j;
for (i = 0; i < size; i++) {
for (j = 0; j < size; j++)
printf("%5d",Board[i][j]);
printf("\n");
}
}
void main()
{
int tr,tc,dr,dc,size;
//初始化
SetBoard(tr,tc,dr,dc,size);
PrintBoard(size);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -