一、题目描述
二、题目分析
正如题目中所提示的那样,我们只需将杨辉三角数存放到一个数组中,并和输入的杨辉三角数进行比对,直到两者相等时,将记录下的位置输出即可。
三、代码分析
(1)这里我们可以定义一个变量k来记录存入数组中的杨辉三角数的个数。
//将杨辉三角数存入demo1数组
int k = 0;//记录存放的杨辉三角的数目
for(i=0;i<demo.length;i++){
for(j=0;j<=i;j++){
System.out.print(demo[i][j]+" ");
//将杨辉三角数存到demo1数组中
demo1[k] = demo[i][j];
//统计存入的个数
k++;
}
System.out.println();
}
System.out.println();
(2)将输入的杨辉三角数和系统产生的杨辉三角数进行比对,直到遇到相等的杨辉三角数,并记录下此时的杨辉三角数的位置。
//输入一个数进行比对
System.out.println("请输入一个正整数:");
int N = input.nextInt();
for(i=0;i<k;i++){
if(N == demo1[i]){
System.out.println(demo1[i]+"第一次出现在第"+(i+1)+"个数的位置上");break;
}
}
四、运行结果
(1)对于20%用户测评数据:
(2)对于所有用户评测用例:
五、整体代码
package 算法;
import java.util.Scanner;
public class yangHui {
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义扫描器
Scanner input = new Scanner(System.in);
//定义杨辉三角数组
int demo[][] = new int[34][34];
//定义数组存储杨辉三角数
int demo1[] = new int[1156];
//生成杨辉三角数
int i,j;
for(i=0;i<demo.length;i++){
demo[i][0] = demo[i][i] = 1;
for(j=0;j<=i;j++){
if(j>0&&j<i){
demo[i][j] = demo[i-1][j] + demo[i-1][j-1];
}
}
}
//将杨辉三角数存入demo1数组
int k = 0;//记录存放的杨辉三角的数目
for(i=0;i<demo.length;i++){
for(j=0;j<=i;j++){
System.out.print(demo[i][j]+" ");
//将杨辉三角数存到demo1数组中
demo1[k] = demo[i][j];
//统计存入的个数
k++;
}
System.out.println();
}
System.out.println();
//输入一个数进行比对
System.out.println("请输入一个正整数:");
int N = input.nextInt();
for(i=0;i<k;i++){
if(N == demo1[i]){
System.out.println(demo1[i]+"第一次出现在第"+(i+1)+"个数的位置上");break;
}
}
//关闭扫描器
input.close();
}
}
六、总结
这道题我并没有考虑时间复杂度和空间复杂度,算是暴力破解吧,我也是新手一枚。如果有什么错误欢迎指出。