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;

        } 

  • 相关阅读:
    献给初学者:谈谈如何学习Linux操作系统
    Spring MVC 教程,快速入门,深入分析
    缓存、缓存算法和缓存框架简介
    计算机科学中最重要的32个算法
    12岁的少年教你用Python做小游戏
    当你输入一个网址的时候,实际会发生什么?
    java程序员从笨鸟到菜鸟之(七)一—java数据库操作
    java中的类修饰符、成员变量修饰符、方法修饰符。
    Java内存分配全面浅析
    Java知多少(19)访问修饰符(访问控制符)
  • 原文地址:https://www.cnblogs.com/Anei/p/7821003.html
Copyright © 2011-2022 走看看