首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2d数组包含其他2d数组

2d数组包含其他2d数组
EN

Stack Overflow用户
提问于 2015-09-10 10:05:28
回答 1查看 486关注 0票数 0

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

代码语言:javascript
复制
char a[][]={{'a','b'}, {'b','a'}}
char b[][]={{'a','b'}, {'b','a'}, {'a','b'}, {'a','b'}, {'a','b'}, {'b','a'}}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-11 07:48:14

我在这里写一个布鲁特力的解决方案:

想法:

从矩阵的左上角(0,0)开始,在其中要找到另一个2d数组。

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

下一个2d子数组将从(0,1)开始。

我们这样做,直到没有更多的子数组需要检查。

代码语言:javascript
复制
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;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32498856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档