摘要:下面是希赛软考学院为大家提供的软考程序员教程重点提炼之棋盘覆盖实现方法,希望能帮助学友们
下面是希赛软考网为大家提供的软考程序员教程重点提炼之棋盘覆盖实现方法,希望能帮助学友们。
棋盘覆盖问题的解决方法,使用C语言编成的,大家一起看看吧。
#include<stdio.h>
#define MAXSIZE 1>>10
int chess[MAXSIZE][MAXSIZE];
void chess_board(int tr,int tc,int dr,int dc,int size)
...{
static int tile=1;
if(1==size)return;
int t=tile++;
int s=(size<<1);
/**//*----left-up corner----*/
if(dr<tr+s&&dc<tc+s)...{
chess_board(tr,tc,dr,dc,s);
}else...{
chess[tr+s-1][tc+s-1]=t;
chess_board(tr,tc,tr+s-1,tc+s-1,s);
}
/**//*----right-up corner---*/
if(dr<tr+s&&dc>=tc+s)...{
chess_board(tr,tc+s,dr,dc,s);
}else...{
chess[tr+s-1][tc+s]=t;
chess_board(tr,tc+s,tr+s-1,tc+s,s);
}
/**//*----left-down corner---*/
if(dr<=tr+s&&dc<tc+s)...{
chess_board(tr+s,tc,dr,dc,s);
}else...{
chess[tr+s][tc+s-1]=t;
chess_board(tr+s,tc,tr+s,tc+s-1,s);
}
/**//*----right-down corner--*/
if(dr>=tr+s&&dc>=tc+s)...{
chess_board(tr+s,tc+s,dr,dc,s);
}else...{
chess[tr+s][tc+s]=t;
chess_board(tr+s,tc+s,tr+s,tc+s,s);
}
}
void print_chess(int size)
...{
int i,j;
for(i=0;i<size;i++)...{
for(j=0;j<size;j++)
printf(\"%4d\",chess<i>[j]);
printf(\"\");
}
}
int main(int argc,char*argv[])
...{
chess_board(0,0,1,2,16);
print_chess(16);
return 0;
}/**//*----------end of function main----------*/
希赛软考网,拥有十四年软考培训经验,希赛网一直坚持自主研发,将丰富的软考培训经验有效融入教程研发过程,自成体系的软考在线题库(软考历年真题)、软考培训教材和软考视频教程,多样的培训方式包括在线辅导、面授、和,使考生的学习更具系统性,辅导更具针对性。采用全程督学机制,,软考平均通过率在全国。
软考备考资料免费领取
去领取