面试问题

来源:1-1 方法简介

慕小课108

2021-02-07 17:57:41

http://img.mukewang.com/climg/601fb969080631f806140633.jpg

老师请问这个题目解题思路是什么呢?

写回答

2回答

好帮手慕阿满

2021-02-08

同学你好,1行,3行,5行,7行菱形所用的*号数是1,5,13,25....总结一个规律是: i的平方加上 (i-1)的平方。这里的i是指菱形的变成。

代码可以参考如下:

public class PrintStars {

public static void main(String[] args) {
System.out.println("请输入大于1的任何数");

Scanner sc = new Scanner(System.in);
int n = sc.nextInt();

//i表示边长
//total表示菱形所用星号数
int i = 0, total = 1;
while (total <= n) {
i++;
total = calculate(i);
}

int sqrt = --i;
print(sqrt);
System.out.println("剩余:"+(n-calculate(sqrt)));


}
//打印菱形
private static void print(int sqrt) {
for (int i = 1; i <= sqrt; i++) {
for (int j = 1; j <= sqrt - i; j++) {
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = sqrt - 1; i > 0; i--) {

for (int j = 1; j <= sqrt - i; j++) {
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}

}
//菱形所用*号的规律 i的平方加上(i-1)的平方
private static int calculate(int i) {
return i * i + (i - 1) * (i - 1);
}
}

​祝学习愉快~

2

好帮手慕阿满

2021-02-07

同学你好,这道题目的重点是求出菱形所用的*号数量,并且这个数量尽可能的大,又不能超过数字N。目标集中在求菱形所用的*号数。可以简单的计算出1行,3行,5行,7行菱形所用的*号数,找出其中的规律。大致思路就是这样,老师这边需要具体研究一下,同学可以自己研究一下。

祝学习愉快~

1

0 学习 · 16556 问题

查看课程