今天学长在面试的时候遇到了一道题,然后让大家做一做。
在不看下面的答案之前,悠闲的朋友们一起来抖动一下大脑吧!
以下是我的想法:
import java.util.Scanner;
public class Case02 {
private static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("n=2\n1*2*5*6\n--3*4\n\nn=3\n1*2*3*10*11*12\n--4*5*8*9\n----6*7\n");
System.out.println("想查看其他数字如上的结构吗?请输入一个数字n:");
int n = sc.nextInt();
int a[] =new int[n*2];
int[] c = null;
for (int i = 1; i < n; i++) {
int x = 0;
//只走一次的for循环
if( i == 1 ){
for (int j = 1; j <= n*(n+1) && i == 1; j++) {
if( j == n*(n+1) ){
System.out.print( j );
a[x] = j;
x++;
}else if( j <= n || j > n*n ){
System.out.print( j + "*");
a[x] = j;
x++;
}
}
System.out.println();
System.out.print("--");
//第一次进入方法是使用的是a数组
c = getNextArray(a, i ,n );
}else{//其他都是c数组
c = getNextArray(c, i ,n );
//用来填充的横岗"--"
String nvl = "";
for (int j = 0; j < i; j++) {
nvl += "--";
}
System.out.print( nvl );
}
//输出
for (int j = 0; j < c.length; j++) {
if( j == c.length-1 ){//排除最后一个*
System.out.print(c[j]);
}else{
System.out.print(c[j]+"*");
}
}
System.out.println();
}
}
/**
* 根据当前行数据来获取下一行数据的值
* @param a 上一个数组
* @param count 第几行
* @param n 用户输入的数字
* @return
*/
private static int[] getNextArray( int[] a ,int count , int n){
int[] b = new int[(a.length/2-1)*2];
int x = 0;
for (int i = 0; i < a.length; i++) {
if( b.length != x ){
//把正中间的两个数删除
if( i < a.length/2-1 ){
b[x] = a[i]+(n-count+1);
x++;
}else if(i > a.length/2){
b[x] = a[i]-(n-count+1);
x++;
}
}
}
return b;
}
}
结果是对的,但是我是根据自己的想法一步一步写下了的。并没有什么技巧,就像我从小就喜欢数学,但是我只喜欢做难题一样,只做自己喜欢的事情。
以下是参考答案:
import java.util.Scanner;
public class Case {
@SuppressWarnings("resource")
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字:");
int n = sc.nextInt();
int c = 0;
int max = n*(n+1);
int r = 0;
for (int i = n; i >= 1; i--) {
for (int j = 0; j < n-i; j++) {
System.out.print("--");
}
for (int k = 0; k < i; k++) {
c++;
System.out.print(c+"*");
}
max = max - i;
r = max;
for (int k = 0; k < i; k++) {
r++;
if(k!=0){
System.out.print("*");
}
System.out.print(r);
}
System.out.println();
}
}
}
世界上聪明的人很多,老实的人很多,努力的人很多。也许你现在这些都做到了,但坚持下来的很少。
所以,不该骄傲,不该浮躁。不该在看到别人不学习时就放弃了自己。