ECNU 3529 梵高先生

ECNU 3529 梵高先生

链接

https://acm.ecnu.edu.cn/problem/3529/

题目

单点时限: 1.0 sec

内存限制: 256 MB

谁的父亲死了
请你告诉我如何悲伤
谁的爱人走了
请你告诉我如何遗忘
——李志《梵高先生》

2009年的最后一天 在义乌隔壁酒吧 李志为了还做唱片欠下来的20W 巡回35场演出 在这晚完成 喝醉了的逼哥哽咽着唱完梵高先生 说最后一次唱这歌。他粗鲁的打断了大家的合唱,然后用最沙哑的嗓音唱了起来,哪天,唯一和他合音的只有一只狗。

抬头再看了一眼星空和黑夜,今晚的星星变成了一个三角形的样子,像这样:

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
...
现在给你一个正整数n,请你给出星空的前n行。

输入格式
输入文件共一行,包含一个正整数n(1<=n<=20)。

输出格式
输出文件共n行,即星空的前n行。每行包含若干正整数,这些正整数之间用一个空格隔开(不能有多余的空格),最后一个正整数后面没有空格。

样例
input
4
output
1
1 1
1 2 1
1 3 3 1

思路

开新坑了,ECNU,华东师大的OJ,这是第一道题,是个水题,一堆文字描述略去,是个杨辉三角。
如果打算要更快,直接打表,因为输入只要求到20,这里还是以学习为重,用常规思路。
先建立数组,从答案中可以发现,左侧和右侧都是1,中间的数字都是上面两个数字的和,这里用递归即可,需要考虑的是要注意输出格式,套一个if即可。此类题目就是,每一行都与上一行有特定关系,只需要注意到关系,并保证数据格式即可。

代码

  public static void fun() {
    int n;
    Scanner sc = new Scanner(System.in);
    n = sc.nextInt();
    int[][] a = new int[n][n + 1];
    for (int i = 0; i < n; i++) {
      a[i][0] = 1;
      a[i][i] = 1;
    }
    for (int i = 2; i < n; i++) {
      for (int j = 1; j < i; j++) {
        a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
      }
    }
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < i + 1; j++) {
        System.out.print(a[i][j]);
        if (j != i) {
          System.out.print(" ");
        }
      }
      if (i != n - 1) {
        System.out.println();
      }
    }
  }
原文地址:https://www.cnblogs.com/blogxjc/p/14259286.html