數(shù)據(jù)結(jié)構(gòu):棋盤覆蓋實(shí)現(xiàn)方法

字號(hào):

棋盤覆蓋問題的解決方法,使用C語(yǔ)言編成的,大家一起看看吧。
    #include
    #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    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=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    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    for(j=0; 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 ---------- */