Какова сложность времени для этого кода?
В этом коде я пытаюсь решить проблему с разделением на палиндромы.
Я использую рекурсию.
Я пытаюсь понять 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;
}
Я надеюсь, что вы прочтете это самостоятельно после прочтения вопроса. 11032015. Эта тема содержит два четких, подробных и полных ответов. Удачи.
Других решений пока нет …