如何解决这种模式? 对我来说就像一波浪。
send_keys
我设法找出了一些正确的数字,但是我知道它还远远没有解决。
这是我的代码
input:4
1 8 9 16
2 7 10 15
3 6 11 14
4 5 12 13
答案 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]