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;

        } 

  • 相关阅读:
    移动开发 Native APP、Hybrid APP和Web APP介绍
    urllib与urllib2的学习总结(python2.7.X)
    fiddler及postman讲解
    接口测试基础
    UiAutomator2.0 和1.x 的区别
    adb shell am instrument 命令详解
    GT问题记录
    HDU 2492 Ping pong (树状数组)
    CF 567C Geometric Progression
    CF 545E Paths and Trees
  • 原文地址:https://www.cnblogs.com/Anei/p/7821003.html
Copyright © 2011-2022 走看看