zoukankan      html  css  js  c++  java
  • 棋盘算法 分而治之

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace ChessBoard
    {
        
    class Program
        {
            
    public static int[,] Board = new int[88];
            
    public static int tail = 0;
            
    static void Main(string[] args)
            {
                chessBoard(
    00478);
                
    for (int i = 0; i < 8; i++)
                {
                    
    for (int j = 0; j < 8; j++)
                    {
                        Console.Write(
    "{0,5}",Board[i,j]);
                    }
                    Console.Write(
    "\n");
                }
                Console.Read();
            }

            
    public static void chessBoard(int tr,int tc,int dr,int dc,int size)
            {
                
    if (size == 1return;
                
    int s = size / 2;
                
    int t = tail++;
                
    //特殊方块在左上角
                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);
                }

            }
        }
    }
  • 相关阅读:
    树形dp-CF-337D. Book of Evil
    (step5.1.2)hdu 2473(Junk-Mail Filter——并查集)
    8种排序算法--直接选择排序
    iPhone之为UIView设置阴影(CALayer的shadowColor,shadowOffset,shadowOpacity,shadowRadius,shadowPath属性)
    摄像头、麦克风、扬声器测试程序(附源码)
    HashMap的实现原理
    第三代搜索推出网民评价系统,seo末日还会远吗?
    SQL Server 深入解析索引存储(聚集索引)
    罗辑思维现象透析
    哥德巴赫猜想证明
  • 原文地址:https://www.cnblogs.com/coolkiss/p/1522610.html
Copyright © 2011-2022 走看看