这是别人写的,可我的编译器变量必须在函数最前面定义啊 #include <stdio.h> int tile = 1;//全局变量 骨牌编号 int Board[4][4];//棋盘 void ChessBoard(int tr,int tc,int dr,int dc,int size); int main() { int i,j; for(i=0; i<4; i++) { for( j=0; j<4; j++) { Board[i][j] = 0; } } ChessBoard(0,0,2,3,4); for( i=0; i<4; i++) { for( j=0; j<4; j++) { printf("%d", Board[i][j]); } printf("\n"); } } /** * tr : 棋盘左上角的行号,tc棋盘左上角的列号 * dr : 特殊方格左上角的行号,dc特殊方格左上角的列号 * size :size = 2^k 棋盘规格为2^k*2^k */ void ChessBoard(int tr,int tc,int dr,int dc,int size) { if(size == 1) { return; } int t = tile++;//L型骨牌编号 int s = size/2;//分割棋盘 //覆盖左上角子棋盘 if(dr<tr+s && dc<tc+s)//特殊方格在此棋盘中 { ChessBoard(tr,tc,dr,dc,s); } else//特殊方格不在此棋盘中 { //用编号为t的骨牌覆盖右下角 Board[tr+s-1][tc+s-1] = t; //覆盖其余方格 ChessBoard(tr,tc,tr+s-1,tc+s-1,s); } //覆盖右上角子棋盘 if(dr<tr+s && dc>=tc+s)//特殊方格在此棋盘中 { ChessBoard(tr,tc+s,dr,dc,s); } else//特殊方格不在此棋盘中 { //用编号为t的骨牌覆盖左下角 Board[tr+s-1][tc+s] = t; //覆盖其余方格 ChessBoard(tr,tc+s,tr+s-1,tc+s,s); } //覆盖左下角子棋盘 if(dr>=tr+s && dc<tc+s)//特殊方格在此棋盘中 { ChessBoard(tr+s,tc,dr,dc,s); } else//特殊方格不在此棋盘中 { //用编号为t的骨牌覆盖右上角 Board[tr+s][tc+s-1] = t; //覆盖其余方格 ChessBoard(tr+s,tc,tr+s,tc+s-1,s); } //覆盖右下角子棋盘 if(dr>=tr+s && dc>=tc+s)//特殊方格在此棋盘中 { ChessBoard(tr+s,tc+s,dr,dc,s); } else//特殊方格不在此棋盘中 { //用编号为t的骨牌覆盖左上角 Board[tr+s][tc+s] = t; //覆盖其余方格 ChessBoard(tr+s,tc+s,tr+s,tc+s,s); } } int t = tile++;//L型骨牌编号 int s = size/2;//分割棋盘 这两句我调到前面去就错了
点赞 评论

相关推荐

头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
07-09 18:28
门头沟学院 Java
写着提前批,结果还要实习4个月以上???
程序员牛肉:这种不用看,直接投了,面试的时候问对应的HR就行。有可能他们是直接复制的暑期实习的模板。
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务