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理解更深了!! 不多说了,小学生水平的表达能力伤不起.... 直 ...
随机推荐
- shell wait 和sleep 对比
wait 在 shell 中使用 wait 是在等待上一批或上一个脚本执行完(即上一个的进程终止),再执行wait之后的命令. sleep sleep 1 睡眠1秒 sleep 1s 睡眠1秒 sle ...
- NOIP1999提高组 题解报告
T1 导弹拦截 题目大意:依次有\(n\) (\(n \le 10^5\))枚导弹,一套导弹拦截系统只能拦截一系列高度递减的导弹(一套系统拦截的弹道不一定相邻).求一套系统最多能拦截多少导弹,以及最少 ...
- ICEM棱柱网格生成方向【转载】
转载自:http://blog.sina.com.cn/s/blog_8add9da60102v2hv.html 利用ICEM生成边界层网格(棱柱网格)时,发现生成的棱柱网格的方向不在流体域一侧,跑到 ...
- Go by Example-变量
在上一节中提到了值类型,但是他们都是写在输出语句里的,如果后面程序需要用的话就显得非常的不方便,所以更好的办法就是把它们定义成变量,然后在调用. 变量 和Python不同的是,Go语言中的变量是需要的 ...
- CentOS 7 安装MySQL8
安装 下载Linux对应的MySQL https://dev.mysql.com/downloads/mysql/ CentOS选择Red Hat Enterprise Linux 在/usr/loc ...
- [游戏开发]LÖVE2D(1):引擎介绍
什么是LÖVE引擎 Love引擎是一个非常棒的框架,你可以用来在Lua制作2D游戏.它是免费的,开源的,适用于Windows,Mac OS X,Linux,Android和iOS. 怎么安装 在官网下 ...
- Qtcreator远程调试出现“The selected build of GDB does not support Python scripting.It cannot be used .."
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/aristolto/article/details/77370853 之前使用的是Qt4.7后来换 ...
- coercing to Unicode: need string or buffer, geoprocessing value object found
workbook.save(outxls),保存xls,出现上面的错误原因是:outxls不是错误 arcpy.AddMessage("--------"+outxls) cann ...
- python 设计模式之策略模式
这几天太忙了,都没空写,所以持续了好几天. 1.策略模式的定义: 策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 通俗的讲,也就是将那些使用的方法 ...
- android: Context引起的内存泄露问题
错误的使用Context可能会导致内存泄漏,典型的例子就是单例模式时引用不合适的Context. public class SingleInstance { private static Single ...