如何在C#中找到一个矩阵是另一个矩阵的子矩阵?
我想发现一个给定的矩阵是另一个矩阵的子矩阵 我尝试了以下代码,但我不确定它是否有效:-如何在C#中找到一个矩阵是另一个矩阵的子矩阵?,c#,C#,我想发现一个给定的矩阵是另一个矩阵的子矩阵 我尝试了以下代码,但我不确定它是否有效:- for (int i = 0; i < a.length - b.length + 1; i++) { for (int j = 0; j < a[0].length - b[0].length + 1; j++) { boolean submatrix = true; // at start we assume we have a submatrix fo
for (int i = 0; i < a.length - b.length + 1; i++) {
for (int j = 0; j < a[0].length - b[0].length + 1; j++) {
boolean submatrix = true; // at start we assume we have a submatrix
for (int k = 0; k < b.length; ++k) {
for (int l = 0; l < b[0].length; ++l) {
if (a[i + k][j + l] == b[k][l]) {
Console.WriteLine("a[" + (i + k) + "][" + (j + l) + "] = b[" + k + "][" + l + "]");
} else {
submatrix = false; // we found inequality, so it's not a submatrix
}
}
}
if (submatrix) {
Console.WriteLine("Found subatrix at " + i + "," + j + ".");
}
}
}
for(int i=0;i
请建议???您建议的方法是正确的,我只解决了一些语法和控制流问题 需要指出的是,该方法仅适用于检测2D矩阵的子矩阵,而不是任何维数矩阵 我假设数据类型是
int
的锯齿状数组,尽管它很容易更改
private static bool IsSubMatrix(int[][] a, int[][] b)
{
for (int i = 0; i < a.Length - b.Length + 1; i++)
{
for (int j = 0; j < a[0].Length - b[0].Length + 1; j++)
{
bool found = true;
for (int k = 0; k < b.Length; ++k)
{
for (int l = 0; l < b[0].Length; ++l)
{
if (a[i + k][j + l] != b[k][l])
{
found = false;
break;
}
}
if (!found) break;
}
if (found) return true;
}
}
return false;
}
private static bool IsSubMatrix(int[]a,int[]b)
{
对于(int i=0;i
这可能也不是最快的实现。您的输入和预期输出是什么?您不确定它是否能工作?你是说你还没有检查?为什么不试着运行这个程序,告诉我们它是否有效。如果没有,请解释原因。(是否会导致错误,而不是预期输出(如果是,请同时提供预期和实际输出))。首先检查二进制子矩阵匹配的有效处理()第一个
继续(在l
循环中)应该是break
@Rotem:-我还粘贴了我自己问题的答案…我得到了这个问题的预期结果…但我想简化它…请建议