Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 二维数组包含其他二维数组_Java_Arrays_Multidimensional Array - Fatal编程技术网

Java 二维数组包含其他二维数组

Java 二维数组包含其他二维数组,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,找到二维阵列包含任何其他二维阵列的最佳解决方案是什么? 例如: char a[][]={{'a','b'}, {'b','a'}} char b[][]={{'a','b'}, {'b','a'}, {'a','b'}, {'a','b'}, {'a','b'}, {'b','a'}} 那么答案应该是2,因为b包含2次a。我在这里写了一个暴力解决方案: 想法: 从矩阵的左上角(0,0)开始,您希望在其中找到另一个二维数组 逐行将较大矩阵的条目与较小矩阵的条目进行匹配,如果所有行的所有条目都匹配

找到二维阵列包含任何其他二维阵列的最佳解决方案是什么? 例如:

char a[][]={{'a','b'}, {'b','a'}}
char b[][]={{'a','b'}, {'b','a'}, {'a','b'}, {'a','b'}, {'a','b'}, {'b','a'}}

那么答案应该是2,因为b包含2次a。

我在这里写了一个暴力解决方案:

想法:

从矩阵的左上角(0,0)开始,您希望在其中找到另一个二维数组

逐行将较大矩阵的条目与较小矩阵的条目进行匹配,如果所有行的所有条目都匹配,则已找到2d数组。如果任何行的任何条目不匹配,则转到下一个2d子阵列

下一个2d子阵列将从(0,1)开始

我们这样做,直到没有更多的子阵列留下来检查

class Twodarray
{
 public static void main(String []args)
 {
  char a[][]={{'a','b'}, {'b','a'}};
  char b[][]={{'a','b','c'}, {'b','a','d'}, {'a','b','a'}, {'a','b','b'}, {'a','b','a'}, {'b','a','a'}};
  int c=number_of_2d_arrays(b,a);
  System.out.println(c);
 }
  public static int number_of_2d_arrays(char [][]arr1,char [][]arr2)
    {
     int i=0,j=0,c=0;
     while(true)
     {
      int row=i,col=j;      
      if(arr2.length>arr1.length-row)
      {
       break;
      }
      else if(arr2[0].length>arr1[0].length-col&&col==0)
      {break;}
      else if(arr2[0].length>arr1[0].length-col)
      {++i;j=0;}
      else
      {
       boolean matches=true;
       for(int a=0;a<arr2.length;++a)
       {col=j;
        for(int b=0;b<arr2[0].length;++b)
        {         
         if(arr1[row][col++]!=arr2[a][b])
         {matches=false;break;}
        }    

        if(!matches)
         break;
        ++row;
       }       
       if(matches)
        {++c;}
       ++j;
      }
     }
    return c;
    }
}
class-Twodarray
{
公共静态void main(字符串[]args)
{
字符a[][]={{'a','b'},{'b','a'};
字符b[][]={{'a','b','c'},{'b','a','d'},{'a','b','a'},{'a','b','b'},{'a','b','b','a'},{'b','a','a'};
int c=二维数组的个数(b,a);
系统输出打印ln(c);
}
_2d_数组的公共静态整数_(char[]]arr1,char[]]arr2)
{
int i=0,j=0,c=0;
while(true)
{
int row=i,col=j;
如果(arr2.长度>arr1.长度行)
{
打破
}
else if(arr2[0]。长度>arr1[0]。长度col&&col==0)
{break;}
else if(arr2[0]。长度>arr1[0]。长度列)
{++i;j=0;}
其他的
{
布尔匹配=真;

对于(int a=0;a这些数组的结果应该是什么?
char a[]={{'1','2'},{'1','2'}};char b[]={{{'1','2'},{'1','2'},{'1','2'}
那么答案应该是2。@realpoint我不知道如何继续。任何有用的信息都会有所帮助。@RajatSharma这两个数组的维数都已修复了吗?非常感谢。{'1','2'},{'1','2'}你是一个救命人:)