当前所在位置:珠峰网资料 >> 计算机 >> 软件水平 >> 正文
数据结构:棋盘覆盖实现方法
发布时间:2010/11/10 15:26:32 来源:www.xue.net 编辑:城市总裁吧
   棋盘覆盖问题的解决方法,使用C语言编成的,大家一起看看吧。
  #include <stdio.h>
  #define MAXSIZE 1<<10
  int chess[MAXSIZE][MAXSIZE];
  void chess_board(int tr, int tc, int dr, int dc, int size)
  ...{
  static int tile = 1;
  if(1==size) return;
  int t = tile++;
  int s = (size>>1);
  /**//* ---- left-up corner ---- */
  if(dr<tr+s && dc<tc+s)...{
  chess_board(tr, tc, dr, dc, s);
  } else ...{
  chess[tr+s-1][tc+s-1] = t;
  chess_board(tr, tc, tr+s-1, tc+s-1, s);
  }
  /**//* ---- right-up corner --- */
  if(dr<tr+s && dc>=tc+s)...{
  chess_board(tr, tc+s, dr, dc, s);
  } else ...{
  chess[tr+s-1][tc+s] = t;
  chess_board(tr, tc+s, tr+s-1, tc+s, s);
  }
  /**//* ---- left-down corner--- */
  if(dr>=tr+s && dc<tc+s)...{
  chess_board(tr+s, tc, dr, dc, s);
  } else ...{
  chess[tr+s][tc+s-1] = t;
  chess_board(tr+s, tc, tr+s, tc+s-1, s);
  }
  /**//* ---- right-down corner-- */
  if(dr>=tr+s && dc>=tc+s)...{
  chess_board(tr+s, tc+s, dr, dc, s);
  } else ...{
  chess[tr+s][tc+s] = t;
  chess_board(tr+s, tc+s, tr+s, tc+s, s);
  }
  }
  void print_chess(int size)
  ...{
  int i, j;
  for(i = 0; i<size; i++)...{
  for(j=0; j<size; j++)
  printf(\"%4d\", chess[i][j]);
  printf(\" \");
  }
  }
  int main( int argc, char *argv[] )
  ...{
  chess_board(0, 0, 1, 2, 16);
  print_chess(16);
  return 0;
  } /**//* ---------- end of function main ---------- */
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved