杨辉三角
关于杨辉三角的内容再数学上应用很广,也是一个很重要的定理,要了解的朋友去百度,我们这里只考虑用二维数组实现。
package Test;
/**
* 杨辉三角
* 提示:
* 1.第一行又1个元素,第n行有n个元素
* 2.每一行的第一个元素和最后一个元素都是1
* 3.第三行开始,对于非第一个元素和最后一个元素,即:
* Pascal[i][j]=pascal[i-1][j-1]+pascal[i-1][j];
*/
public class PascalTriangle{
public static void main(String[] args){
int[][] pascal=new int[10][];
for(int i=0;i<pascal.length;i++){
pascal[i]=new int[i+1];
pascal[i][i]=pascal[i][0]=1;
if(i>1){
for(int j=1;j<pascal[i].length-1;j++){
pascal[i][j]=pascal[i-1][j-1]+pascal[i-1][j];
}
}
for(int i=0;i<pascal.length;i++){
for(int j=0;j<pascal[i].length;i++){
System.out.print(pascal[i][j]+" ");
}
System.out.println();
}
}
}
}
运行结果:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
回形数
如下图所示的数阵被称为回形数:
4的回形数:
01 02 03 04
12 13 14 05
11 16 15 06
10 09 08 07
7的回形数:
01 02 03 04 05 06 07
24 25 26 27 28 29 08
23 40 41 42 43 30 09
22 39 48 49 44 31 10
21 38 47 46 45 32 11
20 37 36 35 34 33 12
19 18 17 16 15 14 13
回形数实现方式一:
package Test;
/*
* 回形数:
*
*/
public class LoopNumber {
public static void main(String[] args) {
int n=7;
int[][] arr=new int[n][n];
int count=0;
int maxX=n-1;
int maxY=n-1;
int minX=0;
int minY=0;
while(minX<=maxX) {
for(int x=minX;x<=maxX;x++) {
arr[minY][x]=++count;
}
minY++;
for(int y=minY;y<=maxY;y++) {
arr[y][maxX]=++count;
}
maxX--;
for(int x=maxX;x>=minX;x--) {
arr[maxY][x]=++count;
}
maxY--;
for(int y=maxY;y>=minY;y--) {
arr[y][minX]=++count;
}
minX++;
}
for(int i=0;i<arr.length;i++) {
for(int j=0;j<arr.length;j++) {
String space=(arr[i][j]+"").length()==1?"0":"";
System.out.print(space+arr[i][j]+" ");
}
System.out.println();
}
}
}
运行结果:
01 02 03 04 05 06 07
24 25 26 27 28 29 08
23 40 41 42 43 30 09
22 39 48 49 44 31 10
21 38 47 46 45 32 11
20 37 36 35 34 33 12
19 18 17 16 15 14 13
回形数实现方式二:
package Test;
import java.util.Scanner;
/**
* 回形数
* @author q'w
*
*/
public class LoopNumber1 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("输入一个数字:");
int len=scan.nextInt();
int[][] arr=new int[len][len];
int s=len*len;
/*
* k=1:向右 k=2:向下 k=3:向左 k=4:向上
*/
int k=1;
int i=0,j=0;
for(int m=1;m<=s;m++) {
if(k==1) {
if(j<len&&arr[i][j]==0){
arr[i][j++]=m;
}else {
k=2;
i++;
j--;
m--;
}
}else if(k==2) {
if(i<len&&arr[i][j]==0) {
arr[i++][j]=m;
}else {
k=3;
i--;
j--;
m--;
}
}else if(k==3) {
if(j>=0&&arr[i][j]==0) {
arr[i][j--]=m;
}else {
k=4;
i--;
j++;
m--;
}
}else if(k==4) {
if(i>=0&&arr[i][j]==0) {
arr[i--][j]=m;
}else {
k=1;
i++;
j++;
m--;
}
}
}
for(int m=0;m<arr.length;m++) {
for(int n=0;n<arr[m].length;n++) {
System.out.print(arr[m][n]+"\t");
}
System.out.println();
}
}
}
运行结果:
输入一个数字:
7
1 2 3 4 5 6 7
24 25 26 27 28 29 8
23 40 41 42 43 30 9
22 39 48 49 44 31 10
21 38 47 46 45 32 11
20 37 36 35 34 33 12
19 18 17 16 15 14 13