二维数组的应用
- 杨辉三角
(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();
}
}
}

浙公网安备 33010602011771号