【问题标题】:What is the time-Complexity for the following code?以下代码的时间复杂度是多少?
【发布时间】:2014-01-14 21:37:07
【问题描述】:

这段代码的时间复杂度是多少?

在这段代码中,我试图解决“回文分区”问题。 我正在使用递归。 我试图理解DP。通过这个程序,我想分析它的时间复杂度。我想将它与动态编程的自下而上方法进行比较。自下而上的方法需要 O(n^3) 并且我很难找到递归函数的时间复杂度。请帮忙

string str;

int l;
int cut[200][200];
bool isPalin(int i,int j)
{
    bool f=true;
    for(int x=i,y=j;x<y;x++,y--)
        if(str[x]!=str[y])f=false;
    return f;
}
int func(int i,int j)
{
  if(i==j){cut[i][j]=0;return 0;}
  if(isPalin(i,j))return 0;
  if(cut[i][j]!=-1)return cut[i][j];
  cut[i][j]=9999999;
  for(int k=i;k<j;k++)
  {
    cut[i][j]=min(cut[i][j],func(i,k)+1+func(k+1,j));
  }
  return cut[i][j];
}
int main()
{
  while(1){
  cin>>str;
  l=str.size();
  for(int i=0;i<l;i++)
    for(int j=0;j<l;j++)
          cut[i][j]=-1;
  cout<<func(0,str.size()-1)<<endl;
 }
 return 0;
}

【问题讨论】:

  • 您的问题不够完善。您在确定此代码的时间复杂度时遇到了什么问题?您具体在哪些方面需要帮助? (如被问及,这个问题是“为我做我的工作。”,这不是一个问题。)
  • @DavidSchwartz:我正在尝试理解 DP。通过这个程序,我想分析它的时间复杂度。我想将它与动态编程的自下而上方法进行比较。自下而上的方法需要 O(n^3) 并且我很难找到递归函数的时间复杂度。请帮忙。
  • 查看2709106 问题。答案包含了解递归函数时间复杂度的完美说明。

标签: c++ algorithm recursion time asymptotic-complexity


【解决方案1】:

希望你在阅读11032015的问题后能自己解决。该主题包含两个清晰、详细和完整的答案。祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多