将二维数组中的一个模式替换为另一个模式
我正在尝试编写一个执行以下操作的方法:将数组 A 的每次出现替换为数组 B,其中 A 位于二维数组 C 内,然后返回修改后的数组。 A、B 和 C 是二维整数数组。
给定一个矩形数组 c 和另一个矩形数组 a,其中 a 的维度 <= c 的维度,找到与 a 匹配的 c 子数组的第一次出现,并用 b 替换该子数组(必须具有与 a) 相同的尺寸。
public class ReplacePatterns {
public static void main(String[] args){
}
//replace every instance of the pattern a with the pattern b inside c.
//find a way to get the dimensions of a 2D array
public static int[][] replacePattern(int[][] a, int[][] b, int[][] c){
for(int i = 0; i < c.length; i++){
for(int j = 0; j < c[0].length; j++){
if(c[i][j] == a[i][j]){ //c[i][j] should match up with a[0][0].
int[][] d; //copy the array inside c to d.
}
}
}
}
}
I'm trying to write a method that does the following: Replace every occurrence of the array A with the array B, where A is inside the 2D array C, then return the modified array. A, B, and C are 2-dimensional arrays of integers.
Given a rectangular array c, and another rectangular array a, with the dimensions of a <= those of c, find the first occurrence of a sub-array of c that matches a, and replace that sub-array with b (which must have the same dimensions as a).
public class ReplacePatterns {
public static void main(String[] args){
}
//replace every instance of the pattern a with the pattern b inside c.
//find a way to get the dimensions of a 2D array
public static int[][] replacePattern(int[][] a, int[][] b, int[][] c){
for(int i = 0; i < c.length; i++){
for(int j = 0; j < c[0].length; j++){
if(c[i][j] == a[i][j]){ //c[i][j] should match up with a[0][0].
int[][] d; //copy the array inside c to d.
}
}
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
所以,假设我正确理解了这个问题,你想要这样的东西:
我什至在其中包含了两个测试以进行确认,但我很确定它适用于一般情况。它可能效率低下,并且可能不适用于大型数组,但在这种情况下它可以完成工作。
该程序以图形方式输出三个给定模式(A、B 和 C),并打印出 C 在替换发生后的外观。在第二次测试运行中,您应该看到如下内容:
So, assuming I understood the question correctly, you want something like this:
I even included two tests in there, for confirmation, but I'm pretty sure it will work for the general case. It's probably inefficient, and might not work for huge arrays, but it gets the job done in this case.
The program outputs graphically the three given patterns (A, B and C), and prints out how C looks after the replacement has taken place. In the second test run, you should see something like this:
下面演示了一种解决方案。请注意,我没有考虑优化代码以最小化模式检查。我确信存在更好的算法来查找模式。我采用了一种幼稚的方法来验证每个节点上的模式。代码里面有注释。
One solution is demonstrated below. Please note that I did not give a thought on optimizing the code to minimize pattern checking. I am sure a better algorithm exists for finding the patterns. I took a naive approach of verifying the pattern on each node. notes inside the code.