java - 用小数组替换大数组或映射的一部分

标签 java

我有一个 22X12 map ,定义为颜色网格。我有七个可能出现在该网格上的对象。每个对象都有一小部分颜色,范围从 4X1 到 2X2。是否有任何类型的数学或关键字我可以继续找出如何将较小的数组放入较大的数组中,覆盖较大的数组值?

为了给出一个小例子来说明我想要完成的任务,我将使用更大的整数映射和更小的整数数组以及我想要的输出。

map :

1 1 1 1 1 1
1 0 0 0 0 1
1 0 0 0 0 1
1 0 0 0 0 1
1 1 1 1 1 1

较小的数组:

1 0
0 1

数组放置后的映射:

1 1 1 1 1 1
1 0 1 0 0 1
1 0 0 1 0 1
1 0 0 0 0 1
1 1 1 1 1 1

我只需要一个开始的地方。是否有我可以查找的线性代数概念,或者是否有任何技术可以完成此类事情?我正在努力确定如何去做这件事。谢谢。

最佳答案

public static void main (String[] args) {
    int[][] bigMap = new int[][] {
            { 1, 1, 1, 1, 1, 1 },
            { 1, 0, 0, 0, 0, 1 },
            { 1, 0, 0, 0, 0, 1 },
            { 1, 0, 0, 0, 0, 1 },
            { 1, 1, 1, 1, 1, 1 }
    };

    int[][] smallMap = new int[][] {
            { 1, 0 },
            { 0, 1 }
    };

    overwriteArray(bigMap, smallMap, 1, 1);

    // print out the 2d array
    for (int i = 0; i < bigMap.length; i++) {
        for (int j = 0; j < bigMap[0].length; j++) {
            System.out.print(" " + bigMap[i][j]);
        }
        System.out.println();
    }

}

static void overwriteArray(int[][] big, int[][] small, int x, int y) {
    for (int i = 0; i < small.length; i++) {
        for (int j = 0; j < small[i].length; j++) {
            big[x+i][y+j] = small[i][j];
        }
    }
}

关于java - 用小数组替换大数组或映射的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16568331/

相关文章:

java - 如何使用Java仅搜索MySQL表中的一条特定记录

java - 为什么我的代码没有返回连续 "maximum"524275"的 1's for the specific input "个数字?

java - 从 Java 中的 JTextField 读取多项式时出错

java - 如何在线程和 GUI 之间进行通信

用于查找空格或大写字符的 Java 正则表达式

java - 如何在java泛型中为类型参数定义静态字段

java - 如何仅显示 thymeleaf 中不为空的变量

java - 使用 AWS SSO 时 AWS Java SDK 找不到配置文件

java - 如何使用 Spring 3.2.3 JavaConfig 读取环境变量?

java - 具有许多不同 View 的 ListView 适配器