一道面试题,题目不难,但觉得很有意思。要求是实现一个数字图形,具体如下:
- 输入数字“1”,输出: 1
- 输入数字“2”,输出:
222
212
222 - 输入数字“3”,输出:
33333
32223
32123
32223
33333
以此类推。
当时看起来挺容易,我做起来却花了很长时间,最终运行出来了,回来后,我凭着记忆,把程序重新优化了下,具体如下:
import java.util.Scanner;
public class Kaoti {
public static void main(String[] args) {
Kaoti kt=new Kaoti();
}
public Kaoti() {
while (true) {
System.out.println("请输入数字:");
Scanner ss=new Scanner(System.in);
int a= ss.nextInt();
int b[][] = new int[2 * a - 1][2 * a - 1];
for (int k = a - 1; k >= 0; k--) {
for (int i = 0; i < 2 * a - 1; i++) {
for (int j = 0; j < 2 * a - 1; j++) {
if ((i <= a + k - 1 && i >= a - k - 1) && (j <= a + k - 1 && j >= a - k - 1)) {
b[i][j] = k + 1;
}
}
}
}
for (int i = 0; i < 2 * a - 1; i++) {
for (int j = 0; j < 2 * a - 1; j++) {
System.out.print(b[i][j]);
}
System.out.println();
}
}
}
}