通配符模式匹配中的分段错误

时间:2016-06-26 19:34:18

标签: c++ string segmentation-fault dynamic-programming

我在interviewBit中的通配符模式匹配中遇到Segmentation错误,我寻求帮助只是为了现在没有响应。 我正在使用DP来解决任务。 请帮我弄清楚segFault的原因 链接到问题 - https://www.interviewbit.com/problems/regular-expression-match/

这是我在C ++中获取segFault的解决方案。

int Solution::isMatch(const string &s, const string &p) {

    int n=s.size(),m=p.size();
    bool dp[n+1][m+1];

   for(int i=0;i<=n;i++)for(int j=0;j<=m;j++)dp[i][j]=false;
   dp[0][0]=true;

   for(int j=1;j<=m;j++)
      if(p[j-1]=='*')dp[0][j]=dp[0][j-1];

   for(int i=1;i<=n;i++)
   {
      for(int j=1;j<=m;j++)
      {
         if(s[i-1]==p[j-1] || p[j-1]=='?')dp[i][j]=dp[i-1][j-1];
         else if(p[j-1]=='*')
         {
            int v1=dp[i][j-1],v2=0;// Not Using
            v2=(dp[i-1][j]|dp[i][j-1]);
            dp[i][j]=(v1|v2);
         }
         else dp[i][j]=false;
      }
   } 
   return dp[n][m];
}

1 个答案:

答案 0 :(得分:0)

您必须分配动态内存

bool** dp = new bool*[n+1];
for(bool i = 0; i < n+1; ++i)
    dp[i] = new bool[m+1];

由于您不需要对数据进行任何自定义操作,只需一个数组就足够了,不需要矢量。