java杨辉三角的实现
来源:互联网 发布:淘宝满减怎么免费设置 编辑:程序博客网 时间:2024/06/05 05:46
根据输入行数,打印出杨辉三角形。
1.首先分析杨辉三角
两侧全部都是1,中间的数等于其上边两数之和。如果在二维数组中,则如下:
2.可以通过二维数组来处理方阵,一个双重循环就能实现,外循环控制行数,内循环控制列来完成方阵内数字的计算和存储。
程序编写
a.首先编写出程序框架
import java.util.Scanner;public class First {public static void main(String[] args) { System.out.print("请输入行数:"); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt();//键盘接收行数 int[][] arr = getTriangle(num); //得到杨辉三角 print(arr);//打印杨辉三角}}
b.然后得到杨辉三角
由前面的问题分析可知,用二维数组计算存储杨辉三角,杨辉三角竖边、斜边都为1,可以先赋值,然后再给中间元素赋值,当前位置的值等于它的上方数和左上角上的数之和。
程序代码如下:
private static int[][] getTriangle(int num) {int[][] ary = new int[num][num];//用二维数组存储 for(int i = 0; i < ary.length; i++)//竖边、斜边置1{ary[i][0] = 1;ary[i][i] = 1;} for(int i = 1; i < ary.length; i++)//外循环控制行数{for(int j = 1; j <= i; j++)//内循环控制列{//里面部分,等于当前位置的上方和左上角之和ary[i][j] = ary[i-1][j-1] + ary[i-1][j];}}return ary;}c.打印杨辉三角
杨辉三角保存在二维数组中,通过一个双重循环就可以打印出来,但是要注意的是,不需要把所有元素都打印出来,内循环列的控制要小于等于当前行数。
程序代码如下:
private static void print(int[][] ary){for(int i=0;i<ary.length;i++)//外循环控制行{for(int j=0;j<=i;j++)//内循环控制列{System.out.printf(" %-3d", ary[i][j]);}System.out.println();//换行}}
附完整程序:
import java.util.*;public class First { public static void main(String[] args) { Scanner in = new Scanner(System.in);//获取控制台输入对象 System.out.print("请输入行号: "); int m = in.nextInt();//从键盘接收输入 int n=2*m-1;//列元素个数 int arr[][]=new int[m][n]; for(int i=0;i<m;i++)//外循环控制行 { for(int j=0;j<n;j++)//内循环控制列 { if(j<(m-i-1)||(j>=(m+i)))//输出等腰三角形两边空格 System.out.print(" "); else if((j==(m-i-1))||(j==(m+i-1))) //计算并输出等腰三角形两个腰 { arr[i][j]=1; System.out.printf("%-3d",arr[i][j]); } else if((i+j)%2==0&&m%2==0||(i+j)%2==1&&m%2==1)//中间默认数字0用空格替换 System.out.print(" "); else//计算并输出中间数字 { arr[i][j]=arr[i-1][j-1]+arr[i-1][j+1]; System.out.printf("%-3d",arr[i][j]); } } System.out.println();//输出换行 } }}
bat版杨辉三角实现
@echo off&color 0esetlocal enabledelayedexpansionmode con: cols=130 lines=130:topcls::set /p in=请输入行数:set in=23&set ab=1&set var=64if "%in%"=="" goto topif %in% geq 35 goto topif %in% leq 0 goto topecho %in%|findstr /r "^[0-9][0-9]*$">nul 2>nul||goto topset str=1for /l %%i in (1,1,%in%) do ( set num= set num2=0 for %%a in (!str!) do ( set /a num2+=1 if !num2!==1 set "str1=" set /a num1=%%a+num set "str1=!str1! !num1!" set num=%%a ) call :lis "!str1:~1!" set "str=!str1! 0")rem 再输出个倒 金字塔 玩玩。for /l %%a in (22 -1 1) do echo !nam%%a!for /l %%i in (1 1 3) do ( for %%a in (a b c d e f) do ( color 0%%a ping/n 2 127.1>nul ))exit:lisset max=%~1for /l %%a in (0 1 300) do (if not "!max:~%%a,1!"=="" set /a ci+=1)set /a ki=var-ci/2for /l %%a in (1 1 !ki!) do set kg= !kg!echo !kg!!max!set nam!ab!=!kg!!max!set /a ab+=1set ci=0&set kg=goto :eof
阅读全文
0 1
- java杨辉三角的实现
- 杨辉三角的Java实现
- Java实现杨辉三角
- java实现杨辉三角
- 杨辉三角java实现
- Java实现杨辉三角
- 杨辉三角java实现
- Java实现杨辉三角
- java实现杨辉三角
- java实现杨辉三角
- Java实现杨辉三角
- Java实现杨辉三角
- java实现杨辉三角
- JAVA问题总结之17-杨辉三角的实现
- 使用java实现杨辉三角的输出
- 用java实现杨辉三角
- JAVA实现输出杨辉三角
- java实现杨辉三角,输出对齐
- 常用几种窗口状态+常用函数
- C++ 自定义迭代器(实现++递增两格)
- java中验证码程序的实现
- 关于cookie的跨域问题与XSS的原理与防护
- 消消乐(C语言版)
- java杨辉三角的实现
- Makefile中的常用函数
- 【Jetson Tx2 视觉slam开发】入门配置二
- 润乾V5集群缓存同步功能介绍
- 使用java的java 命令,直接调用执行class文件
- Sublime Text license 破解
- 收集一些较好的CSS效果
- CS:GO升级 Linux不再是“法外之地”
- 机器学习实战——决策树讲解