MENU

第九届蓝桥杯 Java A—— 打印图形

March 22, 2019 • Read: 3907 • 算法阅读设置

如下的程序会在控制台绘制分形图(就是整体与局部自相似的图形)

当 n=1,2,3 的时候,输出如下:
请仔细分析程序,并填写划线部分缺少的代码

n=1 时:

  • o
  • ooo
  • o

n=2 时:

  • o
  • ooo
  • o
  • o o o
  • ooooooooo
  • o o o
  • o
  • ooo
  • o

n=3 时:

  • o
  • ooo
  • o
  • o o o
  • ooooooooo
  • o o o
  • o
  • ooo
  • o
  • o o o
  • ooo ooo ooo
  • o o o
  • o o o o o o o o o
  • ooooooooooooooooooooooooooo
  • o o o o o o o o o
  • o o o
  • ooo ooo ooo
  • o o o
  • o
  • ooo
  • o
  • o o o
  • ooooooooo
  • o o o
  • o
  • ooo
  • o

源程序:

  • public class Main {
  • static void show(byte[][] buf) {
  • for (int i = 0; i < buf.length; i++) {
  • for (int j = 0; j < buf[i].length; j++) {
  • System.out.print(buf[i][j] == 0 ? ' ' : 'o');
  • }
  • System.out.println();
  • }
  • }
  • static void draw(byte[][] buf, int x, int y, int size) {
  • if (size == 1) {
  • buf[y][x] = 1;
  • return;
  • }
  • int n = size / 3; // 填空
  • draw(buf, x, y, n);
  • draw(buf, x - n, y, n);
  • draw(buf, x + n, y, n);
  • draw(buf, x, y - n, n);
  • draw(buf, x, y + n, n);
  • }
  • public static void main(String[] args) {
  • final int N = 3;
  • int t = 1;
  • for (int i = 0; i < N; i++)
  • t *= 3;
  • byte[][] buf = new byte[t][t];
  • draw(buf, t / 2, t / 2, t);
  • show(buf);
  • }
  • }
Archives Tip
QR Code for this page
Tipping QR Code