杨辉三角,回形数的实现

杨辉三角

关于杨辉三角的内容再数学上应用很广,也是一个很重要的定理,要了解的朋友去百度,我们这里只考虑用二维数组实现。

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值