haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 初中教育 > 初中作文初中作文

残缺棋盘

发布时间:2014-04-20 14:19:04  

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

int **B=NULL;

static int tile = 0;

void tileboard (int tr,int tc,int dr ,int dc,int size)

{

int t;

int s;

if (size ==1) return;

tile =tile +1; t=tile;

s = size /2;

if ((dr<tr+s)&&(dc<tc+s)) /*处理左上象限*/

tileboard(tr,tc,dr,dc,s);/*残缺方格位于本象限,覆盖其他方格*/

else{

B[tr+s-1][tc+s-1]=t; /*否则,右下角置三格板t*/

tileboard(tr,tc,tr+s-1,tc+s-1,s);/*覆盖其余方格*/

}

if ((dr<tr+s)&&(dc>=tc+s))/*处理右上象限*/

tileboard (tr,tc+s,dr,dc,s);/*残缺方格位于本象限,覆盖其他方格*/

else{

B[tr+s-1][tc+s]=t;/*否则,左下角置三格板t*/

tileboard(tr,tc+s,tr+s-1,tc+s,s);/*覆盖其余方格*/

}

if ((dr>=tr+s)&&(dc<tc+s))/*处理左上象限*/

tileboard (tr+s,tc,dr,dc,s);/*残缺方格位于本象限,覆盖其他方格*/

else {

B[tr+s][tc+s-1]=t;/*否则,右上角方格置三格板t*/

tileboard (tr+s,tc,tr+s,tc+s-1,s);/*覆盖其余方格*/

}

if ((dr>=tr+s)&&(dc>=tc+s))/*处理右下象限*/

tileboard(tr+s,tc+s,dr,dc,s);/*残缺方格位于本象限,覆盖其他方格*/

else{

B[tr+s][tc+s]=t;/*否则,左上角方格置三格板t*/

tileboard(tr+s,tc+s,tr+s,tc+s,s);/*覆盖其余方格*/

}

}

int main()

{

int tr=0,tc=0,dr=0,dc=0,size=0,i,j;

printf("请输入方格所在的行号和列号以及棋盘的规模(2的幂数):");

scanf("%d %d %d",&dr,&dc,&size);

B=(int**)malloc(sizeof(int*)*size);

for(i=0;i<size;i++)

{

B[i]=(int *)malloc(sizeof(int)*size);

}

for(i=0;i<size;i++)

{

for(j=0;j<size;j++)

{

B[i][j]=0;

}

}

B[dr][dc]=-1;//特殊方格所在的位置为-1

for(i=0;i<size;i++) //把方格初始化

{

for(j=0;j<size;j++)

{

printf("%d\t",B[i][j]);

}

printf("\n");

} // 可有可无的操作查看初始化后的B数组

tileboard(tr,tc,dr,dc,size);//调用函数来实现缺陷棋盘的覆盖

printf("再次生成树组,查看缺陷方格\n");

for(i=0;i<size;i++) //把方格初始化

{

for(j=0;j<size;j++)

{

printf("%d\t",B[i][j]);

}

printf("\n");

} //查看最终生成的缺陷棋盘的覆盖情况;

return 0;

}

网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com