二维数组的应用

  1. 杨辉三角
    (a+b)^1 = a+b
    (a+b)^2 = a^2+ 2ab +b^2
    ·
    ·
    ·
    (a+b)^n = a^n+nab+ ··· +nab+b^n
    其中次方展开的各项系数,对应杨辉三角的值
杨辉三角
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

首先观查模型,思考用什么去做,要做什么,规律是什么

实现代码
/*【提示】
1. 第一行有 1 个元素, 第 n 行有 n 个元素
2. 每一行的第一个元素和最后一个元素都是 1
3. 从第三行开始, 对于非第一个元素和最后一个元
素的元素。即:
yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];*/

public class DoubleArray1 {
	public static void main(String[] args) {
//		一、声明二维数组
		int[][] pascalTriangle = new int[10][];
//		二、初始化赋值
		for (int i=0;i<pascalTriangle.length;i++){
			pascalTriangle[i] = new int[i+1];
//			首末元素赋值为1
			pascalTriangle[i][0] = pascalTriangle[i][i] = 1;
//			为第三行往后中间元素赋值
//			if (i>1){因为下面循环中条件已经符合
			for (int j=1;j<pascalTriangle[i].length - 1;j++){
				pascalTriangle[i][j] = pascalTriangle[i-1][j-1] + pascalTriangle[i-1][j];//这个其实就是上面一个数和上面的左边一个数的和
//				}
			}
		}
//		三、遍历输出数组
		for (int i=0;i<pascalTriangle.length;i++){
			for (int j=0;j<pascalTriangle[i].length;j++){
				System.out.print(pascalTriangle[i][j]+"\t");
			}
			System.out.println();
		}
	}
}

2.回形数

点击查看代码
public class RectangleTest1 {

	public static void main(String[] args) {
		int n = 8;
		int[][] arr = new int[n][n];
		
		int count = 0; //要显示的数据
		int maxX = n-1; //x轴的最大下标
		int maxY = n-1; //Y轴的最大下标
		int minX = 0; //x轴的最小下标
		int minY = 0; //Y轴的最小下标
		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();
		}
	}
}
posted @ 2022-03-10 11:07  形码客  阅读(116)  评论(0)    收藏  举报