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

     1 #include <iostream>
     2 using namespace std;
     3 const int N = 11;
     4 int Board[N][N];
     5 int tile = 0;
     6  
     7 /*
     8 tr:棋盘左上角方格的行号
     9 tc:棋盘左上角方格的列号
    10 dr:特殊方格所在的行号
    11 dc:特殊方格所在的列号
    12 size:方形棋盘的边长
    13 */
    14 void ChessBoard(int tr, int tc, int dr, int dc, int size)
    15 {
    16     if(size == 1)
    17         return;
    18     int t = ++tile, s = size/2;
    19  
    20     //覆盖左上角子棋盘
    21     if(dr<tr+s && dc<tc+s)
    22         //特殊方格在此棋盘中
    23         ChessBoard(tr, tc, dr, dc, s);
    24     else   // 此棋盘无特殊方格
    25     {
    26         // 用t号L型骨型牌覆盖右下角
    27         Board[tr+s-1][tc+s-1] = t;
    28         // 覆盖其余方格
    29         ChessBoard(tr, tc, tr+s-1, tc+s-1, s);
    30     }
    31  
    32     //覆盖右上角子棋盘
    33     if(dr<tr+s && dc>=tc+s)
    34         ChessBoard(tr, tc+s, dr, dc, s);
    35     else
    36     {
    37         Board[tr+s-1][tc+s] = t;
    38         ChessBoard(tr, tc+s, tr+s-1, tc+s, s);
    39     }
    40  
    41     //覆盖左下角子棋盘
    42     if(dr>=tr+s && dc<tc+s)
    43         ChessBoard(tr+s, tc, dr, dc, s);
    44     else
    45     {
    46         Board[tr+s][tc+s-1] = t;
    47         ChessBoard(tr+s, tc, tr+s, tc+s-1, s);
    48     }
    49  
    50     //覆盖右下角子棋盘
    51     if(dr>=tr+s && dc>=tc+s)
    52         ChessBoard(tr+s, tc+s, dr, dc, s);
    53     else
    54     {
    55         Board[tr+s][tc+s] = t;
    56         ChessBoard(tr+s, tc+s, tr+s, tc+s, s);
    57     }
    58 }
    59  
    60 void DisplayBoard(int size)
    61 {
    62     for(int i=1; i<=size; ++i)
    63     {
    64         for(int j=1; j<=size; ++j)
    65             printf("%2d ", Board[i][j]);
    66         printf("\n");
    67     }
    68 }
    69  
    70 int main()
    71 {
    72     ChessBoard(1, 1, 1, 2, 4);
    73     DisplayBoard(4);
    74     return 0;
    75 }
  • 相关阅读:
    vue语法
    第3章 语言基础(上)
    第2章 HTML中的JavaScript
    第1章 什么是JavaScript
    附录 A ES6附加特性
    第14章 跨浏览器开发技巧
    第13章 历久弥新的事件
    第12章 DOM操作
    第11章 代码模块化
    第10章 正则表达式
  • 原文地址:https://www.cnblogs.com/xiaofanke/p/3001183.html
Copyright © 2011-2022 走看看