如何打印此循环图案

时间:2019-11-13 14:01:48

标签: java logic

如何解决这种模式? 对我来说就像一波浪。

send_keys

我设法找出了一些正确的数字,但是我知道它还远远没有解决。

这是我的代码

input:4

1 8 9  16
2 7 10 15
3 6 11 14
4 5 12 13

2 个答案:

答案 0 :(得分:1)

受@B启发。 Go的注释,您可以实现以下代码片段:

代码段

int g = 4;
for (int row = 1; row <= g; row++) {
    for (int col = 1; col <= g; col++) {
        if (col%2 == 1) {
            System.out.printf("%2d ", g*(col-1)+row);
        } else {
            System.out.printf("%2d ", g*col-row+1);
        }
    }
    System.out.println();
}

控制台输出

 1  8  9 16 
 2  7 10 15 
 3  6 11 14 
 4  5 12 13 

答案 1 :(得分:-1)

请找到基本的解决方案,这不是一个好方法。

但是它将给出正确的结果。

import java.util.ArrayList;
import java.util.List;

public class Test {

    public static List<ArrayList<Integer>> pattern(int j) {
        List<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
        boolean loopComp = true;
        int resultArrayIndex = 0;
        int toAddWithResultForAntiClock = j - 1;
        int resultToPut = 0;
        for (int i = 0; i <= j * j - 1; i++) {
            resultArrayIndex = i % j;
            if (resultArrayIndex == 0) {
                loopComp = !loopComp;
            }
            if (loopComp) {
                resultToPut = i + 1 + toAddWithResultForAntiClock;
                toAddWithResultForAntiClock = toAddWithResultForAntiClock - 2;
            } else {
                resultToPut = i + 1;
            }
            if (toAddWithResultForAntiClock == -(j + 1)) {
                toAddWithResultForAntiClock = j - 1;
            }
            try {
                result.get(resultArrayIndex);
            } catch (Exception e) {
                ArrayList<Integer> a = new ArrayList<>();
                result.add(a);
            }
            result.get(resultArrayIndex).add(resultToPut);
        }
        return result;
    }

    public static void main(String[] args) {
        List<ArrayList<Integer>> result = pattern(4);
        for (ArrayList<Integer> arrayList : result) {
            System.out.println(arrayList);
        }
    }
}

它将打印结果:

[1, 8, 9, 16]
[2, 7, 10, 15]
[3, 6, 11, 14]
[4, 5, 12, 13]