分治算法——棋盘覆盖

Code
 1#include<stdio.h>
 2#define max 17
 3int data[max][max];
 4int t;
 5int erfen(int i,int j,int sx,int sy,int n)
 6{
 7 if(n==1)return;
 8 n=n/2;int num;num=t++;
 9 if(sx<i+&& 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+&& 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+&& 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+&& 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
26}

27chushihua(int a[][],int n)
28{
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;}

34int main()
35{
36 int sx,sy,i,j,n,s;
37 while(scanf("%d %d %d",&sx,&sy,&n)!=EOF)
38 {
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{
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

 

棋盘覆盖算法

属于分治的概念当中

如果需要更多的了解这个算法,可以留言,我可以会制作相应的FLASH教程

转载于:https://www.cnblogs.com/jianjungki/archive/2009/05/19/1460361.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值