zoukankan      html  css  js  c++  java
  • 棋盘覆盖问题

    //使用分治策略,设计解棋盘覆盖问题的简洁算法

    #define SIZE 512
    static int tile=0;//L型骨牌号
    int Board[SIZE][SIZE];

    void ChessBoard(int tr,int tc,int dr,int dc,int size)
    {
    if(size==1) return;
    int t=tile++,s=size/2;//分割棋盘

    //覆盖左上角子棋盘
    if(dr<tr+s&&dc<tc+s)

    ChessBoard(tr,tc,dr,dc,s);
    else{ //此棋盘中无特殊方格
    //用t号L型骨牌覆盖右下角
    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{
    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{
    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{
    Board[tr+s][tc+s]=t;
    ChessBoard(tr+s,tc+s,tr+s,tc+s,s);
    }

    }


    编辑器加载中...

    Live together,or Die alone!
  • 相关阅读:
    C语言I博客作业05
    C语言I博客作业04
    C语言II博客作业04
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    学期总结
    C语言I博客作业07
    C语言I博客作业04
    C语言II博客作业04
  • 原文地址:https://www.cnblogs.com/hzhida/p/2354727.html
Copyright © 2011-2022 走看看