Comment detail

自然数の分割(別表現) (Nested Flatten)

This comment is reply for 4523 minke: (高さ) × (□の総数) × (その高...(自然数の分割(別表現)). Go to thread root.

テーブルとか要らなかったですねorz

ちなみに実行時間の99%はファイル書き込み時間でした。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <stdlib.h>
#define MIN(a,b) ((a)<(b) ? (a) : (b))
#define N 256
int seq[N];
int height;

void print_young(int d, int n, int ceil) {
  int i,j;
  int upper, lower;
  if (d > 0) {
    upper = n - d + 1;
    lower = (n-1) / d + 1;
    for (i = MIN(ceil, upper); i >= lower; i--) {
      seq[height-d] = i;
      print_young(d-1, n-i, i);
    }
  } else {
    for (i = 0; i < height; i++) {
      for (j = 0; j < seq[i]; j++)
        printf("□");
      putchar('\n');
    }
    putchar('\n');
  }
}

int main(int argc, char **argv) {
  int n = (argc >= 2) ? atoi(argv[1]) : 50;
  for (height = 1; height <= n; height++) {
    print_young(height, n, n);
  }
  return 0;
}

Index

Feed

Other

Link

Pathtraq

loading...