棋盘覆盖问题向大家求助,希望大家能够帮帮忙呀!谢谢大家!!! 棋盘覆盖问题大家应该知道是什么问题,这里就不再多余了! 以下是源代码!!! #include<iostream> #include<stdlib.h> using namespace std ; void chessboard(int a[][] , int tr , int tc , int dr , int dc , int size) ; //其中*a[] 表示是二维数组 ,tr表示棋盘坐上角方格的行号 ,tc表示棋盘坐上角方格的列号 //dr表示特殊方格所在的行号 , dc表示特殊方格所在的列号 , size表示棋盘规格(既有几个格) void chessboard(int a[][] , int tr , int tc , int dr , int dc , int size) { int tile = 1 ; if(size == 1) return ; int t = tile++ ; //L型骨牌号 int s = size/2 ; //分割棋盘 //覆盖左上角棋盘 if(dr < tr+s && dc < tc+s) //特殊方格在此棋盘中 chessboard( a , tr , tc , dr , dc , s) ; else { //此棋盘中无特殊方格 //用t好L型骨牌覆盖右下角 a[tr+s-1][tc+s-1] = t ; //覆盖其余方格 chessboard(a , tr , tc , tr+s-1 , tc+s-1 , s) ; } //覆盖右上角棋盘 if(dr < tr+s && dc >= tc+s) //特殊方格在此棋盘中 chessboard(a , tr , tr+s , dr , dc , s) ; else { //此棋盘中无特殊方格 //用t好L型骨牌覆盖左下角 a[tr+s-1][tc+s] = t ; //覆盖其余方格 chessboard( a , tr , tc+s , tr+s-1 , tc+s , s) ; } //覆盖左下角棋盘 if(dr >= tr+s && dc < tc+s) //特殊方格在此棋盘中 chessboard(a , tr+s , tc , dr , dc , s) ; else { //此棋盘中无特殊方格 //用t好L型骨牌覆盖右上角 a[tr+s][tc+s-1] = t ; //覆盖其余方格 chessboard(a , tr+s , tc , tr+s , tc+s-1 , s) ; } //覆盖左下角棋盘 if(dr >= tr+s && dc >= tc+s) //特殊方格在此棋盘中 chessboard(a , tr+s , tc+s , dr , dc , s) ; else { //此棋盘中无特殊方格 //用t好L型骨牌覆盖左上角 a[tr+s][tc+s] = t ; //覆盖其余方格 chessboard(a , tr+s , tc+s , tr+s , tc+s , s) ; } }
int main() { int b[4][4] ; for(int i=0 ; i<=3 ; i++) for(int j=0 ; j<=3 ; j++) b[i][j] = 0 ; chessboard(b,0,0,0,1,16); for(int i=0 ; i<=3 ; i++) { for(int j=0 ; j<=3 ; j++) cout << b[i][j] << " " ; cout << endl ; } system("pause") ; }