杨辉三角的解题思路是:
定义一个十行的数组,列用循环定义,每一行比上一行多一个;
int[][] arr = new int[10][];
如图:
可以看到最左边,和斜边都是1,这样的话,在循环里是不是可以这样定义:
连续赋值,第一个和最后一个都为1;
arr[0]=arr[i]=1;
其次从第三行开始看,可以发现每一个数都是都是它上面的数加上面左边的数。
再在循环里加个循环,来遍历数组;
for(int j=1;j<arr[i].length;j++):这个循环的最大数一定不大于,arr[i]的当前长度,随着i的增加,长度才能增加
那么,arr[i][j]:当前数
arr[i-1][j-1]:当前数的上面左边的数
arr[i-1][j]:当前数的上面的数
把他们的数赋值给当前数,这样就行了
代码:
package ArrayDemo1;
/*
* 杨辉三角形
* */
public class ArrayText1 {
public static void main(String[] args) {
// 静态定义数组
int[][] arr = new int[10][];
for(int i=0;i<arr.length;i++){
// 定义二维数组中一维数组的长度
arr[i]=new int[i+1];
arr[i][0]=arr[i][i]=1;
// 赋值
for (int j=1;j<arr[i].length-1;j++){
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
}
// 遍历数组
for (int i=0;i<arr.length;i++){
for (int a=0;a<arr[i].length;a++){
System.out.print(arr[i][a]+"\t");
}
System.out.println();
}
}
}
回形数:
解题思路:
我们首先需要个数组:int[][] arr = new int[][];
其次我们需要四个来判断,向右,向下,向左,向上的四个变量;
然后再来两个变量i,j来确定数组的位置。
最后通过循环来给数组赋值:
代码:
package ArrayDemo1;
/*
* 回形数
* */
import java.util.Scanner;
public class ArrayDemo2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 输入边长
System.out.println("请输入矩形方阵的边长:");
int num= sc.nextInt();
// 这是总数,一共打印num1次
int num1=num*num;
// 数组长度
int[][] arr = new int[num][num];
// 四个方向变量
int right=1;
int down=2;
int ligft=3;
int top=4;
// 确定数组位置的变量
int i=0,j=0;
// 把方向的量赋值给一个判断方向的条件
int a=right;
// 循环赋值
for(int m=1;m<=num1;m++){
// 判断方向是否向右
if(a==right){
// 判断有没有大于定义的长度,和这个位置上是不是已经被赋值了
if(j<num && arr[i][j]==0){
// 把m循环数赋值给第一个数组元素
arr[i][j++]=m;
}else{
// 这时说明向右已经赋值好了,把向下的量赋值给a
a=down;
// i++是使数组换行
i++;
// j--因为结束,j加了一个1
j--;
// 这次循环没有赋值,所以要减1
m--;
}
}else if(a==down){
if(i<num && arr[i][j]==0){
arr[i++][j]=m;
}else {
a = ligft;
i--;
j--;
m--;
}
}else if(a==ligft){
if(j>=0 && arr[i][j]==0){
arr[i][j--]=m;
}else{
a=top;
i--;
j++;
m--;
}
}else if(a==top){
if(i>=0 && arr[i][j]==0){
arr[i--][j]=m;
}else{
a=right;
i++;
j++;
m--;
}
}
}
// 遍历输出回形数
for(int wai=0;wai<arr.length;wai++){
for (int nei=0;nei<arr[wai].length;nei++){
System.out.print(arr[wai][nei]+"\t");
}
System.out.println();
}
}
}