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

    棋盘覆盖问题

    #include<iostream>  

    using namespace std;  

        int tile=1;  

        int board[100][100];  

        void chessBoard ( int tr, int tc, int dr, int dc, int size )  

        {  

            if ( size==1 )    //棋盘方格大小为1,说明递归到最里层  

                return;  

            int t=tile++;     //每次递增1  

            int s=size/2;    //棋盘中间的行、列号(相等的)  

            //检查特殊方块是否在左上角子棋盘中  

            if ( dr<tr+s && dc<tc+s )              //在  

                chessBoard ( tr, tc, dr, dc, s );  

            else         //不在,将该子棋盘右下角的方块视为特殊方块  

            {  

                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 );  

            }  

        }  

          

        int main()  

        {  

            int size;  

            cout<<"输入棋盘的size(大小必须是2n次幂): ";  

            cin>>size;  

            int index_x,index_y;  

            cout<<"输入特殊方格位置的坐标: ";  

            cin>>index_x>>index_y;  

            chessBoard ( 0,0,index_x,index_y,size );  

            for ( int i=0; i<size; i++ )  

            {  

                for ( int j=0; j<size; j++ )  

                    cout<<board[i][j]<<" ";  

                cout<<endl;  

            }  

    return 0;

        } 

  • 相关阅读:
    hdu 1518 Square 深搜,,,,花样剪枝啊!!!
    3D拾取技术
    cocos2dx 使用spine制作骨骼动画
    poj3080Blue Jeans
    G4Studio+extjs+highcharts 下在ext4j的panel中放入hightCharts图表
    快的打车架构实践
    电源管理ACPI、及APM、GNU/Linux系统下的相应命令使用
    ------银行系统------
    ARM+llinux系统移植3G拨号上网收发短信(一)【转】
    在ARM-linux上实现4G模块PPP拨号上网【转】
  • 原文地址:https://www.cnblogs.com/Anei/p/7821003.html
Copyright © 2011-2022 走看看