⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2.cpp

📁 棋盘覆盖问题
💻 CPP
字号:


 
#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  ---------- */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -