1233: 输出杨辉三角前n行(Java)
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)的更多相关文章
- 1233: 输出杨辉三角前n行
#include <stdio.h> int main() { int n,i,j,ch[15][15],v,k; char *nl = ""; while(scanf ...
- 使用for循环输出杨辉三角-还是不懂得需要复习
package com.chongrui.test; /* *使用for循环输出杨辉三角杨辉三角形由数字排列,可以把它看作一个数字表,其基本特征是两侧的数值均为1,其他位置的数值是其正上方的数值与左上 ...
- C语言实现输出杨辉三角
1.倒推法实现输出杨辉三角右半部分,代码如下: #include<stdio.h> int main() { ]; printf("请输入行数n:"); scanf(& ...
- php输出杨辉三角
php输出杨辉三角 一.截图 二.代码 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- 08-使用for循环输出杨辉三角(循环)
/** * 使用循环输出杨辉三角 * * */ public class Test6 { public static void main(String[] args) { // 创建二维数组 int ...
- 算法基础_递归_求杨辉三角第m行第n个数字
问题描述: 算法基础_递归_求杨辉三角第m行第n个数字(m,n都从0开始) 解题源代码(这里打印出的是杨辉三角某一层的所有数字,没用大数,所以有上限,这里只写基本逻辑,要符合题意的话,把循环去掉就好) ...
- 用java输出杨辉三角
杨辉三角:它的两个边都是1,内部其它都是肩上两个数的和 第一种: package aaa; public class YangHui { public static void main(String[ ...
- 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 ...
- 利用yield关键字输出杨辉三角
最近学习了下python,发现里面也有yield的用法,本来对C#里的yield不甚了解,但是通过学习python,对于C#的yield理解更深了!! 不多说了,小学生水平的表达能力伤不起.... 直 ...
随机推荐
- 国内Archlinux arm的镜像源
清华 http://mirrors.tuna.tsinghua.edu.cn/archlinuxarm/arch/arch/repo 中科大 http://mirrors.ustc.edu.cn/ar ...
- Centos7使用python3连接inception报错解决办法
inception支持mysqldb库但不支持pymysql库,无奈mysqldb库不兼容py3,直接使用pymysql 连接inception报错如下: ValueError: invalid li ...
- 彻底搞懂Python的字符编码
前言:中文编码问题一直是程序员头疼的问题,而Python2中的字符编码足矣令新手抓狂.本文将尽量用通俗的语言带大家彻底的了解字符编码以及Python2和3中的各种编码问题. 一.什么是字符编码. 要彻 ...
- 关于Vue.use()详解
问题 相信很多人在用Vue使用别人的组件时,会用到 Vue.use() .例如:Vue.use(VueRouter).Vue.use(MintUI).但是用 axios时,就不需要用 Vue.use( ...
- How to transform the day time images to night time ? A series of paper review and some thinkings about this point.
How to transform the day time images to night time ? A series of paper review and some thinkings ab ...
- centos6.6 ftp 配置 修改默认端口等
常规下21端口容易遭到别人的扫描.带来了一定程度的不安全.所以,最好的就是把21端口修改掉. 默认修改为6069 一.修改vsftp的配置文件 vi /etc/vsftpd/vsftpd.conf 在 ...
- c++ 套接字 --->2002 java NIO --->netty
c++ 套接字 --->2002 java NIO --->netty
- 面试准备4——C++相关知识
指针和引用区别: (1)指针: 指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元: 引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已. 如: int a=1;in ...
- Android下拉涮新第三方通用控件
Android下拉涮新第三方通用控件https://github.com/chrisbanes/Android-PullToRefresh Pull To Refresh Views for Andr ...
- js事件函数中(ev)是什么鬼?
首先,从ev所在的位置就可以得知,ev是参数. 在ev中包含了事件触发时的函数, 比如: click事件的ev中包含着e.pageX,e.pageY keydown事件中包含着ev.keyCode等 ...