![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
#include<stdio.h>
2
#define max 17
3
int data[max][max];
4
int t;
5
int erfen(int i,int j,int sx,int sy,int n)
6![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
7
if(n==1)return;
8
n=n/2;int num;num=t++;
9
if(sx<i+n && sy<j+n)
10
erfen(i,j,sx,sy,n);
11
else
12
data[i+n-1][j+n-1]=num,erfen(i,j,i+n-1,j+n-1,n);
13
if(sx<i+n && sy >=j+n)
14
erfen(i,j+n,sx,sy,n);
15
else
16
data[i+n-1][j+n]=num,erfen(i,j+n,i+n-1,j+n,n);
17
if(sx>=i+n && sy<j+n)
18
erfen(i+n,j,sx,sy,n);
19
else
20
data[i+n][j+n-1]=num,erfen(i+n,j,i+n,j+n-1,n);
21
if(sx>=i+n && sy>=j+n)
22
erfen(i+n,j+n,sx,sy,n);
23
else
24
data[i+n][j+n]=num,erfen(i+n,j+n,i+n,j+n,n);
25![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
}
27
chushihua(int a[][],int n)
28![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
29
int i,j;
30
for(i=1;i<=n;i++)
31
for(j=1;j<=n;j++)
32
data[i][j]=0;
33
return;}
34
int main()
35![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
36
int sx,sy,i,j,n,s;
37
while(scanf("%d %d %d",&sx,&sy,&n)!=EOF)
38![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
39
chushihua(data,n);
40
t=1;
41
i=1,j=1;
42
s=n+1;
43
erfen(i,j,sx,sy,n);
44
for(i=1;i<s;i++)
45![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
{
46
for(j=1;j<s;j++)
47
printf("%4d ",data[i][j]);
48
printf("\n");
49
}
50
}
51
return 0;
52
system("pause");
53
}
54![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
棋盘覆盖算法
属于分治的概念当中
如果需要更多的了解这个算法,可以留言,我可以会制作相应的FLASH教程