本题是经过蓝桥杯20年省赛的杨辉三角形改写:
本题的核心就是观察杨辉三角形,发现你输入的数最多在数的对应的行数的下一行就可以找到,
所以本题的核心就是:
Scanner in = new Scanner(System.in); int n = in.nextInt(); Integer[][] it = new Integer[n+1][n+1]; //输入一个数,至多在杨辉三角对应行数的下一行找到
最后设个标记,判断数在杨辉三角的第几个数能找到
package lanqiao;
import java.util.Scanner;
public class YanHuiSanJiao {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
Integer[][] it = new Integer[n+1][n+1]; //输入一个数,至多在杨辉三角对应行数的下一行找到
int mark=1;
for (int i = 0; i < n+1; i++) { //将最左和右侧一列初始化
it[i][0] = 1;
it[i][i] = 1;
}
for (int i = 2; i < n+1; i++) {
for (int j = 1; j <= i - 1; j++) {
it[i][j] = it[i - 1][j - 1] + it[i - 1][j]; //从第三行开始,能够满足公式,将三角的所有数据初始化
}
}
for (int i = 0; i < n+1; i++) { //为了美观用空格答应出三角形模样
for (int j = i; j <n ; j++) {
System.out.print(" ");
}
for (int j = 0; j <= i; j++) {
System.out.print(it[i][j]+" ");
if(it[i][j]==n){
System.out.println("您输入的数字在杨辉三角的第"+mark+"个位置");
System.exit(0); //找到后就立刻退出虚拟机,程序正常结束
}
mark++;
}
System.out.println("");
}
}
}