WUSTOJ 1233: 输出杨辉三角前n行

题目

原题链接

Description

输出杨辉三角前n行。

Input

输入一个数n(n <= 9)

Output

输出杨辉三角前n行。(注意行末不能有多余的空格,数字以%3d的格式输出)

Sample Input

3
4

Sample Output

      1
1 1
1 2 1 1
1 1
1 2 1
1 3 3 1

分析

  • 考虑到多组输入,用二维数组提前初始化,再按照格式输出比较快,循环里面都每次单独计算的话可能较慢(未测试)
  • 杨辉三角原理

    第1列和对角线全部都是1。其他位置的数是它上面的1个数以及左上的1个数。公式如下:
 a[i][j] = a[i - 1][j - 1] + a[i - 1][j]

注意

  • 前面的空格每次加2个,不是1个
  • 每2个数之间有1个空格
  • 每个数占3格,用%3d控制格式
  • 末尾没有空格
  • 每组数据输出之后有1个空行

代码

import java.util.Scanner;

public class Main {

	private Scanner sc;
private int n;
// 保存杨辉三角,下标从0开始
private int[][] yangHui; public Main() {
sc = new Scanner(System.in);
init(); // 初始化
while(sc.hasNext()) {
n = sc.nextInt();
display(); // 打印
System.out.println(); // 每组数据末尾换行
}
sc.close();
} /**
* 初始化杨辉三角数组
*/
private void init() {
yangHui = new int[9][9];
yangHui[0][0] = 1;
int i, j;
for(i = 1; i < 9; i++) {
yangHui[i][0] = yangHui[i][i] = 1; // 第1列和最后1列
for(j = 1; j < i; j++) {
yangHui[i][j] = yangHui[i - 1][j - 1] + yangHui[i - 1][j];
}
}
} /**
* 打印杨辉三角
*/
private void display() {
int i, j;
for(i = 0; i < n; i++) {
// 前面空格个数
for(j = n - i - 1; j > 0; j--) {
System.out.print(" ");
}
// 每个数占3格,且每个数之间空1格
for(j = 0; j < i; j++) {
System.out.printf("%3d ", yangHui[i][j]);
}
// 最后1个数,换行
System.out.printf("%3d\n", yangHui[i][j]);
}
} public static void main(String[] args) {
new Main();
} }

1233: 输出杨辉三角前n行(Java)的更多相关文章

  1. 1233: 输出杨辉三角前n行

    #include <stdio.h> int main() { int n,i,j,ch[15][15],v,k; char *nl = ""; while(scanf ...

  2. 使用for循环输出杨辉三角-还是不懂得需要复习

    package com.chongrui.test; /* *使用for循环输出杨辉三角杨辉三角形由数字排列,可以把它看作一个数字表,其基本特征是两侧的数值均为1,其他位置的数值是其正上方的数值与左上 ...

  3. C语言实现输出杨辉三角

    1.倒推法实现输出杨辉三角右半部分,代码如下: #include<stdio.h> int main() { ]; printf("请输入行数n:"); scanf(& ...

  4. php输出杨辉三角

    php输出杨辉三角 一.截图 二.代码 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  5. 08-使用for循环输出杨辉三角(循环)

    /** * 使用循环输出杨辉三角 * * */ public class Test6 { public static void main(String[] args) { // 创建二维数组 int ...

  6. 算法基础_递归_求杨辉三角第m行第n个数字

    问题描述: 算法基础_递归_求杨辉三角第m行第n个数字(m,n都从0开始) 解题源代码(这里打印出的是杨辉三角某一层的所有数字,没用大数,所以有上限,这里只写基本逻辑,要符合题意的话,把循环去掉就好) ...

  7. 用java输出杨辉三角

    杨辉三角:它的两个边都是1,内部其它都是肩上两个数的和 第一种: package aaa; public class YangHui { public static void main(String[ ...

  8. java例题_33 等腰输出杨辉三角

    1 /*33 [程序 33 杨辉三角] 2 题目:打印出杨辉三角形(要求打印出 10 行如下图) 3 程序分析: 4 1 5 1 1 6 1 2 1 7 1 3 3 1 8 1 4 6 4 1 9 1 ...

  9. 利用yield关键字输出杨辉三角

    最近学习了下python,发现里面也有yield的用法,本来对C#里的yield不甚了解,但是通过学习python,对于C#的yield理解更深了!! 不多说了,小学生水平的表达能力伤不起.... 直 ...

随机推荐

  1. 如何设置xshell代理?

    场景:我想在公司内部用一台服务器A访问客户内网的机器C.在公司和客户之间有一台中间服务器B,我只能先连接到中间服务器,然后通过中间服务器跳转才能到客户C机器. 上面场景的连接策略:A->B-&g ...

  2. JAVA爬虫对font-face字体反爬虫解密

    1.参考博客          https://www.jianshu.com/p/9975de57b0ce          https://blog.csdn.net/litang199612/a ...

  3. sqlserver 触发器语法

    语法:Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)CREATE TRIGGER ...

  4. DELPHI正则表达式

    DELPHI正则表达式 1)下载源码 官方网站: http://www.regular-expressions.info/delphi.html     直接下载: http://www.regula ...

  5. 二维背包---P1509 找啊找啊找GF

    P1509 找啊找啊找GF 题解 很明显这是一道二维背包题目 如果一个dp数组做不了,那么我们就再来一个dp数组 题目要求,花费不超过 m ,消耗人品不超过  r  ,泡到尽量多的妹子,时间尽量少 f ...

  6. esxi 配置 交换主机 虚拟机交换机 linux centos 配置双网卡

    最近手里的项目网络环境是 192.168.199.1 直接到防火墙 192.168.1.x 是内网网段 走到 防火墙下的一个三层交换机 现在需要将内网的三台服务器端口映射出去,需要到防火墙去做映射,防 ...

  7. Python 爬虫从入门到进阶之路

    https://www.cnblogs.com/weijiutao/p/10735455.html

  8. Core Data 的线程安全问题

    前言: 很多小的App只需要一个ManagedContext在主线程就可以了,但是有时候对于CoreData的操作要耗时很久的,比如App开启的时候要载入大量数据,如果都放在主线程,毫无疑问会阻塞UI ...

  9. orcale11g安装

    一.centos7.5安装orcale 安装环境 内存最小1G,推荐2G或者更高 内存为1-2g,swap是内存的1.5倍左右 内存大于2G, swap和内存相等 硬盘最小为30G oracle版本 ...

  10. react中如何处理日期格式整理

    1.第一种模式——对应组件:DatePicker: 需要引入 import moment from "moment"; values.cfjdrq = moment(values. ...